首页 > 代码库 > python路6__code,fileoperator
python路6__code,fileoperator
1,文件编码
python默认编码,python2默认为ascii,python3默认为utf-8所以说,python3默认支持中文。
>>> import sys >>> sys.getdefaultencoding() #显示python默认编码 ‘utf-8‘2,
2,文件操作通过指针的移动在读取文件,文件打开,指针指向文件开头,文件读完,指针指向文件末尾,指针不会自动回到文件开头,所以说,文件只能读一遍,如果想想再一次从头读取文件,就需要手动将指针指向文件开头(1)只读
>>> f = open(‘1.txt‘,‘r‘) >>> data =http://www.mamicode.com/ f.read() >>> data2 = f.read() #疑问:data2有数据吗?
>>> f.close() >>> print (data) 1 2 3 4 5 6 7 8 9 人民的民义 >>> print (data2) #data2为空 >>>
(2)只写,如果文件已存在,就覆盖
>>> f = open(‘1.txt‘,‘w‘) >>> f.write(‘洞房花烛夜\n‘) 6 >>> f.write(‘进班题名时\n‘) 6 >>> f.close() >>>
(3)追加,只能在文件末尾追加,不能读
>>> >>> f = open(‘1.txt‘,‘a‘) >>> f.write(‘洞房花烛夜\n‘) 6 >>> f.write(‘进班题名时\n‘) 6 >>> f.close() >>>
(4)文件的方法f.readline():每次读取文件的一行内容
r+ 读写,可读可追加
w+ 写读,先创建一个文件,在写入(没太多用)
a+ 追加读
rb 二进制格式读取文件,没有encoding参数,使用场景:pyython3中网络传输只能用二进制,视频文件都是二进制的
wb 二进制格式写,f.write(‘hello binary\n‘.encode()) 写时需要str--->bytes,装换
比如:vim 是将文件先全部加载到内存,再进行修改,所以vim读取大文件时要等很久,修改完后再写入硬盘 这种情况下不需要创建新的文件,所以vim适合读小文件
(5) with:为了避免打开文件爱你后忘记关闭,可以通过管理上下文,当with代码臧星完后,内部自动关闭文件释放资源
#打开一个文件 >>> with open(‘1.txt‘,‘r‘) as f1: ... for line in f1: ... print (line) ... 源于纯净 归于健康 #同时打开多个文件 >>> with open(‘1.txt‘,‘r‘) as f1,... open(‘2.txt‘,‘r‘) as f2: ... for line in f1: ... print (line) ... for line in f2: ... print (line) ... 源于纯净 归于健康 a b c d e f g >>>
(6)实例:不打印文件第三行i:这个方法比较low,f.readlines():把文件的每一行作为一个元素,全部存入一个列表,这个readlines方法一次性把文件全部读入到内存中,只适合小文件
f = open(‘1.txt‘,‘r‘) for index,line in enumerate(f.readlines()): if index == 2: print (‘--------我是分割线---------‘) continue print (index,line.strip()) f.close()
运行结果:
root@pythonserver:/python_shell# python3 code_fileoperator.py
0 洞房花烛夜
1 进班题名时
--------我是分割线---------
3 进班题名时
ii:推荐使用这个方法,占用内存少,高效
f = open(‘1.txt‘,‘r‘) Count = 1 for line in f: #此时,f是一个迭代器,文件一行一行的读入内存,内存中同时载入文件中的一 #行,读取下一行到内存是,覆盖上一行 if Count ==3: print (‘----------我是分割线-----------‘) Count +=1 continue print (line.strip()) Count +=1 f.close()
执行结果:
oot@pythonserver:/python_shell# python3 code_fileoperator.py
洞房花烛夜
进班题名时
----------我是分割线-----------
进班题名时
python路6__code,fileoperator