Python基础————文件操作

时间:2021-10-31 17:00:12

文件操作

4.1 文件基本操作

 obj = open('路径',mode='模式',encoding='编码') # 表示要干嘛 读 还是写
obj.write() #写什么内容
obj.read() #读到哪里,全读
obj.close()

4.2 打开模式

- r / w / a
- r+ / w+ / a+
- rb / wb / ab
- r+b / w+b / a+b

4.3 操作

- read() , 全部读到内存

- read(1)

- 1表示一个字符

 obj = open('a.txt',mode='r',encoding='utf-8')
data = obj.read(1) # 1个字符
obj.close()
print(data)
 obj = open('a.txt',mode='rb')
data = obj.read(3) # 1个字节
obj.close()

- write(字符串)

 obj = open('a.txt',mode='w',encoding='utf-8')
obj.write('中午你')
obj.close()

- write(二进制)

 obj = open('a.txt',mode='wb')

 # obj.write('中午你'.encode('utf-8'))
v = '中午你'.encode('utf-8')
obj.write(v) obj.close()

- seek(光标字节位置),无论模式是否带b,都是按照字节进行处理。

 obj = open('a.txt',mode='r',encoding='utf-8')
obj.seek(3) # 跳转到指定字节位置
data = obj.read()
obj.close() print(data) obj = open('a.txt',mode='rb')
obj.seek(3) # 跳转到指定字节位置
data = obj.read()
obj.close() print(data)

- tell(), 获取光标当前所在的字节位置

 obj = open('a.txt',mode='rb')
# obj.seek(3) # 跳转到指定字节位置
obj.read()
data = obj.tell() #获取光标当前所在的字节位置
print(data)
obj.close()

- flush,强制将内存中的数据写入到硬盘

 v = open('a.txt',mode='a',encoding='utf-8')
while True:
val = input('请输入:')
v.write(val)
v.flush() #这里flush已经把内容强行写进硬盘里了 v.close() #关闭文件、保存文件 2个功能

4.4 关闭文件

文艺青年

 v = open('a.txt',mode='a',encoding='utf-8')

 v.close()

二逼

 with open('a.txt',mode='a',encoding='utf-8') as v:
data = v.read() # 错误 mode='a' 只能写,不能读
data=v.write()
# 缩进中的代码执行完毕后,自动关闭文件

4.5 文件内容的修改

 with open('a.txt',mode='r',encoding='utf-8') as f1:
data = f1.read()
new_data = data.replace('飞洒','') with open('a.txt',mode='w',encoding='utf-8') as f1:
data = f1.write(new_data)

**大文件修改(一行一行读出来操作)**【创建】

 f1 = open('a.txt',mode='r',encoding='utf-8')
f2 = open('b.txt',mode='w',encoding='utf-8')
for line in f1: #content= f1.readlines() 得到的是个列表,列表的元素是文件中每一行内容+换行符(字符串)
new_line = line.replace('阿斯','死啊')
f2.write(new_line)
f1.close()
f2.close()
 with open('a.txt',mode='r',encoding='utf-8') as f1, open('c.txt',mode='w',encoding='utf-8') as f2:
for line in f1:
new_line = line.replace('阿斯', '死啊')
f2.write(new_line)