标签:文本 col rem 自己 编码 默认 系统 首部 inux
一.在python中
1. 打开文件,得带文件句柄并赋值给一个变量
f=open(‘a.txt‘,‘r‘,enconding=‘utf-8‘)#默认打开模式为r
2. 通过句柄对文件进行操作
data=f.read()
3. 关闭文件
f.close()
4. 强调第1点:操作完文件后,要及时回收操作系统打开的文件
f.close()
另外一种方式,可不用回收资料,使用with...as....
with open(‘a.txt‘,‘r‘) as f:
data=f.read()
5. 强调第2点:open(..)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码是window的gbk,linux下是utf-8,若保证不乱码,文件以什么格式存,就以什么格式取
二.打开文件的模式
文件句柄=open(‘文件路径‘,‘模式’)
1. 打开文件的模式有(默认为文本模式)
‘r‘读模式,默认模式,文件必须存在,不存在则抛出异常
‘w‘写模式,不可读,不存在则创建,存在则清空内容
‘a’追加模式,不可读,不存在则创建,存在则追加内容
2. 对于非文本模式,我们只能用b模式,‘b’表示以字节的方式操作
‘rb’,‘wb‘,‘ab‘
注意:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
三.操作文件的方法
f.read()#读取所有内容,光标移动到文件末尾
f.readline()#读取一行内容,光标移动到第二行首部
f.readlines()#读取每一行内容,存放于列表中
f.write(‘1111\n222\n‘)#针对文本模式的写,需要自己写换行符
f.write(‘1111\n222\n‘.encode(‘utf-8‘))#针对b模式的写,需要自己写换行符
f.writelines([‘333\n‘,‘444\n‘])#文件模式
f.writelines([bytes(‘333\n‘,encoding=‘utf-8‘),‘444\n‘.encode(‘utf-8‘)]) #b模式
四.文件的修改
方式一:将硬盘存放的该文件的内容加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘
import os
with open(‘a.txt‘) as read_f,open(‘a.txt.swap‘,‘w‘) as write_f:
data=read_f.read()#全部读入内存,如果文件很大,会很卡
data=data.replace(‘xiao‘,‘xi‘)#在内存中完成修改
write_f.write(data)#一次性写入新文件
os.remove(‘a.txt‘)
os.rename(‘a.txt.swap‘,‘a.txt‘)
方式二:将硬盘存放的文件内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件
import os
with open(‘a.txt‘) as read_f,open(‘a.txt.swap‘,‘w‘) as write_f:
for line in read_f:
line=line.replace(‘xiao‘,‘xi‘)
write_f.write(line)
os.remove(‘a.txt‘)
os.rename(‘a.txt.swap‘,‘a.txt‘)
标签:文本 col rem 自己 编码 默认 系统 首部 inux
原文地址:http://www.cnblogs.com/xiaojing3711/p/7891474.html