文件操作Ⅱ
# 文件操作拓展
seek()移动光标位置
tell() 读取光标所在位置
file.seek(字节个数)
1.flush() 强制将内存的数据写入硬盘
v = open('text.txt',mode ='a',encoding = 'utf-8') while True: val = input('请输入:') v.write(val) #每次循环write的写入都暂存在内存中 v.flush() #.flush() 强制将内存的数据写入硬盘 v.close()
1
2
3
4
5
6
#打开文件
f=open('要打开文件路径',mode='r/w/a/',encoding='文件原来编码') #f为接收变量
#操作文件
data = f.() # 读取文件内部全部内容,data为接收内容
f.write('要写内容')
#关闭文件
f.close()
1
2
3
4
5
6
7
2
3
4
5
6
7
文件打开新操作,自动关闭
with open('text.txt',mode= 'a',encoding='utf-8') as v: data = a.read() # 缩进中的代码执行完毕之后自动关闭
1
2
3
# 1.w/wb
w 模式传入的是字符串,写入时计算机进行了两步操作:
将写入内容根据指定编码encoding转换为对应二进制语言
# 字符串转化为二进制 mes = '示例' a = mes.encode('utf-8') #二进制文件转化为字符串 mes = '01010101010100' a = mes.decode('utf-8')
1
2
3
4
5
6将二进制写入到文件里
- 一般用于文字写入
wd 模式传入的是二进制文件,想写入字符串需要进行转换操作
- 要把写入内容先转化为二进制语言(encode)
- wd再将二进制文件写入文件
- 一般用于图片/音频/视频/未知编码写入
# 2. r/rb
r 读取时计算机进行了两步操作:
- 读取硬盘上的二进制
- 按照指定编码转换成对应文件
rb 读取到的是二进制数据,不进行任何转换.
# 3.a/ab
- 用法类比w/r
其余r+/w+/a+/r+b/w+b/a+b操作,不在详述.
1
# 4.文件修改
with open('a.txt',mode='r',encoding='utf-8') as f1:
data = f1.read()
new_data = data.replace('飞洒','666')
with open('a.txt',mode='w',encoding='utf-8') as f1:
data = f1.write(new_data)
1
2
3
4
5
2
3
4
5
# 5.大文件修改
- 在大文件读取时,不能一次性读取,需要按字节read(字节数)或for循环按行读取
with open('a.txt',mode='r',encoding='utf-8') as f1,open('b.txt',mode='w',encoding='utf-8') as f2: #打开文件a,b
for line in f1: #按行取a的内容
new_line = line.replace('666','999') #修改内容
f2.write(new_line) #修改后的写入b,完成修改
1
2
3
4
2
3
4
上次更新: 2023/04/16, 18:35:33