读写函数
with open('info1.txt', 'r+') as f1:
# 读取文件中的每一行并以列表形式返回
lines = f1.readlines()
# 将lines中的全部字符串依次写入文件中
f1.writelines(lines)
bug点
编码
python3中f.readlines()的默认编码是gbk,如果文件为其他编码,则会报错如下:'gbk' codec can't decode byte 0x9d in position 99: illegal multibyte sequence
我用notepad++先将文件编码方式改为GBK2312再进行处理的,这方法可以用但不够灵活。
打开方式
r+、w+、a+
r+直接进行追加写,而w+、a+是先清除文件原有的内容再追加写。当采用w+、a+打开文件时,文件中的内容就已经被清空了。
下面这个代码是用来修改标签页码的,原文件中每一行的页码比实际页码大1,需要将所有页码进行减一再写回到txt文件中。
处理前后结果如图:

with open('info1.txt', 'r+') as f1:
list1 = f1.readlines()
count = 0
index = -5
i = len(list1)-1
while i>=0:
line = list1[i]
i -= 1
try:
page = int(line[index:]) - 1
except:
print(line)
index += 1
page = int(line[index:])
list1[i+1] = str(line[0:index]) + str(page) + '\n'
f1.writelines(list1)
本文档探讨了Python在读写文件时遇到的编码问题,特别是`f.readlines()`默认使用GBK编码可能导致的错误。作者指出,当文件编码不是GBK时,需要手动转换。此外,还解释了'r+'、'w+'和'a+'打开模式的区别,特别是在文件内容处理上的差异。示例代码展示了如何读取文件内容,修改页码并重新写回文件,实现了对文本数据的简单处理。
873





