一、文件处理流程
1、新建一个txt文件:
2、文件操作流程:打开==》读/写==》关闭
注意:如果不指定编码,则文件将以你当前操作系统的默认编码格式打开
3、文件读取操作
file = open("牧马城市", "r", encoding='utf-8') # 只读文件
4、文件写入操作(文件名存在,清空原文件内容;文件名不存在,则新建一个文件)
file = open("牧马城市", "w", encoding='utf-8') # 只写文件
5、文件追加操作
file = open("牧马城市", "a", encoding='utf-8') # 追加文件
追加模式后使用写入功能添加到文件的末尾
6、文件关闭
file.close()
7、文件其他操作模式:
file = open("牧马城市", "r+", encoding='utf-8') # 支持文件的读写
file = open("牧马城市", "a+", encoding='utf-8') # 支持文件的读写
8、模拟文件的打开修改关闭过程
(1)、open()函数打开文件
(2)、read()函数读出全部数据并保存
(3)、对保存的数据做需求修改处理并保存
(4)、关闭文件
(5)、再次打开文件
(6)、将修改后的数据写入文件中
(7)、关闭文件
9、with as 用法替换close操作
with open('a.txt', 'w') as f:
f.write("使用with+as简化关闭操作")
with open('a.txt', 'r', encoding='gbk') as f1, open('b.txt', 'w', encoding='gbk') as f2:
data = f1.read()
f2.write(data)
10、文件b模式操作
# 文件b模式操作(二进制模式)
# 注意:文件在保存的时候是以unicode二进制的形式保存在硬盘上面的,所以使用这种形式打开文件不能指定文件编码格式
# 编码字符串======》encode ======》编码转换成二进制存储
# 读取出二进制 ======》 decode ======》解码转换成字符串
# b模式读取
file = open("牧马城市", "rb")
data = file.read() # 读取出原生的二进制内容
print("使用b模式读取到的原生的二进制文件内容是:", data)
print("使用b模式读取到的解码后的文件内容是:", data.decode('utf-8'))
file.close()
# b模式写入
file = open("c.txt", "wb")
# 两种将字符串转换成bytes的方式
file.write(bytes('你好,世界\n', encoding='utf-8'))
file.write('呵呵哒\n'.encode(encoding='utf-8'))
file.close()
# b模式追加
file = open("c.txt", "ab")
file.write('滚犊子\n'.encode(encoding='utf-8')) # 在文件的最后一个位置写入
file.close()
11、文件操作的其他函数方法
file = open("d.txt", "w")
print("判断文件是否关闭:", file.closed)
print("查看文件打开的编码格式;", file.encoding)
print("将新的内容刷新到硬盘上面:", file.flush())
print("是否在中断上面执行的:", file.isatty())
print("打开文件的文件名:", file.name)
print("光标在文件中的位置:", file.tell())
print("控制文件中光标的移动: ", file.seek(3))
print("从起始位置开始截取多少位:", file.truncate(10))
12、文件操作之seek()函数详解:
# seek(x,0)默认从文件的开头开始计算
file = open("d.txt", "r", encoding="utf-8")
print(file.tell())
file.seek(10, 0)
print(file.tell())
file.seek(3, 0)
print(file.tell())
# seek(x,1)指定从相对位置(上一次光标停留的位置)开始移动,以rb的模式进行操作
file = open("d.txt", "rb")
print(file.tell())
file.seek(10, 1)
print(file.tell())
file.seek(3, 1)
print(file.tell())
# seek(-x,2)从文件末尾开始倒序
file = open("d.txt", "rb")
print(file.tell())
file.seek(-6, 2)
print(file.read())
print(file.tell())
# 适用场景:查看日志文件的最后的内容
file = open("d.txt", "rb")
# for item in file: # 文件循环直接循环文件本身就行
offset = -20
while True:
file.seek(offset, 2)
data = file.readlines()
if len(data) > 1:
print("文件的最后一行是: %s" % (data[-1].decode('utf-8')))
break
offset *= 2