-
文件操作的初始
-
打开文件需要知道三个!
-
文件的路径
-
打开方式:读,写,追加,读写,写读。
-
编码方式utf-8,gbk,gb2312.
f1 = open('d:读取文件.txt',encoding='utf-8',mode='r') content = f1.read() print(content) f1.close() #open 内置函数,open底层调用的是操作系统的接口。 #f1,变量,也叫文件句柄。对文件进行的任何操作,都通过文件句柄.的方式。 #encoding:可以不写,不写参数,默认的编码本,操作系统的默认的编码。 #f1.close():关闭文件话柄。 #mode:选择操作模式,r=读取,w=写入,a=追加,r+=读取追加
-
-
文件操作的三部曲:
- 打开文件
- 对文件句柄进行相应操作
- 关闭文件。
-
报错原因:
-
UnicodeDecodeError:文件储存时与文件打开时编码运用不一致。
-
第二个错误:路径分隔符产生问题:
-
r'c:UsersoldboyDesktop'#在路径前面增加一个r。
-
-
-
文件操作的读
-
r,rb,r+b 四种模式
- r:read for
- rb:操作的是非文本的文件。图片,视频,音频。
read#全部都读出来 f = open('文件的读',encoding='utf-8') content = f.read() print(content) f.close #read(n)按照字符读取 f = open('文件的读',encoding='utf-8') content=f.read(5) print(content) f.close #readline()读取一行 f = open('文件的读',encoding='utf-8') print(f.readline()) f.close #readlines()返回一个列表,列表中的每个元素都是原文件的每一行。 f = open('文件的读',encoding='utf-8') l1 = f.readlines() for line in l1: print(l1) f.close for 读取 f = open('文件的读',encoding='utf-8') for i in f: print(i) f.close
-
-
文件操作的写
-
w,wb,w+,w+b四种模式
#没有文件,创建文件,写入内容 f = open('文件的写',encoding='utf-8',mode='w') f.write('要写的内容') f.close #如果文件存在,先清空文件内容,再写入新内容 f = open('文件的写',encoding='utf-8',mode='w') f.write('要写的内容') f.close wb f = open('美女.jpg',encoding='utf-8',mode='rb') content = f.read() f.close f1 = open('美女2.jpg',encoding='utf-8',mode='mb') f1.write(content) f1.close
-
-
文件操作的追加
a,ab,a+,a+b四种模式
#没有文件创建文件,追加内容 f = open('文件的追加',encoding='utf-8',mode='a') f.write('要追加的内容') f.close #有文件,在原文件的最后面追加内容 f = open('文件的追加',encoding='utf-8',mode='a') f.write('要追加的内容') f.close
-
文操作的其他模式 r+
#读取并追加 #顺序不能错误 f = open('文件的读写',encoding='utf-8',mode='r+') content = f.read() print(content) f.write('人的一切痛苦,本质都是对自己无能的愤怒') f.close
-
文件操作的其他功能
- 三个大方向:
读,四种模式:r rb r+ r+b
写,四种模式:w ,wb,w+,w+b
追加 四种模式:a,ab,a+,a+b
相应的功能:对文件句柄的操作:read read(n) readline() readlines()write()
#tell 获取光标位置,单位字节 f = open('文件的读写',encoding='utf-8') print(f.tell()) content=f.read() print(content) f.close #seek 调整光标的位置 f = open('文件的读写',encoding='utf-8') f.seek(7) content=f.read() print(content) f.close flush 强制刷新 f = open('文件的其他功能',encoding='utf-8',mode='w') f.write('fhjsakhk') f.flush() f.close()
-
打开文件的另一种方式
优点1:可以一次操作多个文件 with open('文件的读',encoding='utf-8')as f1, open('文件的写',encoding='utf-8',mode='w')as f2: print(f1.read()) f2.write('hfdjahk') 优点2:不用手动关闭文件句柄 with open('文件的读',encoding='utf-8')as f1: print(f1.read)
-
文件操作的改
- 文件操作改的流程:
- 以读的模式打开原文件。
- 以写的模式创建一个新文件。
- 将原文件的内容读出来修改成新内容,写入新文件。
- 将原文件删除
- 将新文件重命名成原文件
- 具体代码
第一种: import os #加载一个模块 with open('alex自述',encoding='utf-8')as f1, open('alex自述.bak',encoding='utf-8',mode='w')as f2: du = f1.read() gai = du.replace('alex','SB') f2.write(gai) as.remove('alex自述') as.remane('alex自述.bak','alex自述') 第二种: import os with open('alex自述',encoding='utf-8')as f1, open('alex自述.bak',encoding='utf-8',mode='w'): for i in f1: zhi = i.replace('alex','sb') f2.write(zhi) as.remove('alex自述') as.vemane('alex自述.bak','alex.自述') #有关清空问题: 关闭文件句柄,再次以w模式打开此文件时,才会清空。 with open('文件再写',encoding='utf-8',mode='w')as f: for i in range(9): f1.write('只要句柄不关闭,写多少都不会被删除')
- 文件操作改的流程:
-