Python 文件的操作方法:
打开文件
1 f = open('test','r',encoding='utf-8') 2 #f :文件句柄 3 #test:文件绝对路径 4 #r:打开方式 5 #encoding 打开文件的编码模式 6 with open('test',encoding='utf-8') as f: 7 pass 8 #如果不输入填写的方式默认是已只读的方式打开 9 #这种打开方式,文件操作完了之后,系统自动执行close 关闭文件
文本的打开模式:
r 以只读方式打开
w 以写方式打开 (如果文件不存在,就创建文件,如果文件存在,清空文件,再写入) a 以追加模式打开 (从 EOF 开始, 必要时创建新文件) r+ 以读写模式打开 w+ 以读写模式打开 a+ 以读写模式打开 rb 以二进制读模式打开 wb 以二进制写模式打开
ab 以二进制追加模式打开 rb+ 以二进制读写模式打开 wb+ 以二进制读写模式打开 ab+ 以二进制读写模式打开 ( x 如果文件存在报错,不存在则创建
文件的操作方法
read :读 如果打开方式是r read(2)就是读取2个字符,如果是r+b打开模式,则参数代表字节
close:关闭文件
seek:定位光标,定位光标后,读取数据或者写入数据,都在光标后操作(seek的参数是以字节单位为准)
readline:读取一行
write:写
flush:刷新至硬盘,写文件默认都是写至内存,如果执行这个命令,相当于保存了。
tell:读取当前光标位置
1 f = open('test','r+',encoding='utf-8') 2 # with open('test',encoding='utf-8') as f: 3 f.read(30) 4 #read 方法 默认参数是-1 也就是读取至文件末尾 5 #read(20)意思是,读取20个字节 6 # f.readline() 7 #读取一行 8 #参数也是字节,如果输入参数,则和read方法的效果类似 9 # f.write('xieru ') 10 #如果想换行,可以在文件后面加入 11 f.seek(20) 12 #seek 定位光标。定位完成之后,再写入,会覆盖后置文字 13 f.write('wo shi sunjinchao') 14 print(f.tell())
15 f.close 记得关闭文件
##当用户有读操作后,写方法就可以在文件后面追加
例子:把每行的文档中,加入一个age。
修改文件(修改文件,不要修改当前文件,只能创建一个新文件,然后把久文件删除。把新文件重命名):必要时先备份
1 import os #导入os模块,文件操作 2 file_one = open('flie',encoding='utf-8') 3 file_two = open('flie_bak','w',encoding='utf- 8 ') 4 #txt文件 5 # 1、sunjinchao,25 6 # 2、xianfangdi,24 7 # 3、sunjinyao,3 8 for line in file_one: 9 print(line) 10 user_list = line.split(',')#字符串方法用逗号分割 11 print(user_list) 12 user_list[0] = user_list[0] + ',age' 13 print(user_list) 14 #user_list[0].用split方法后,一个段字符串为[0] 15 user_str = ','.join(user_list)#拼接字符串 16 print(user_str) 17 file_two.write(user_str)#把新的内容写入至新文件 18 file_one.close() 19 file_two.close()#关闭文件,不然报错 20 os.remove('test')#删除文件 21 os.rename('file_bak','file')#重命名 22 23 ''' 24 输出的内容 25 第1个print :1、sunjinchao,26 26 第2个print:['1、sunjinchao', '26 '] 27 第3个print:['1、sunjinchao,age', '26 '] 28 第4个print:1、sunjinchao,age,26 29 '''