读写函数
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)