python文件读写

本文档探讨了Python在读写文件时遇到的编码问题,特别是`f.readlines()`默认使用GBK编码可能导致的错误。作者指出,当文件编码不是GBK时,需要手动转换。此外,还解释了'r+'、'w+'和'a+'打开模式的区别,特别是在文件内容处理上的差异。示例代码展示了如何读取文件内容,修改页码并重新写回文件,实现了对文本数据的简单处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读写函数

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)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值