Python写入文本文件新增换行时输出字面量\n的问题求解
问题解决方法
你遇到的两个核心错误如下:
- 直接对列表调用
str()方法转字符串:str(propkeyinfo)会生成列表的字面量表示字符串,比如你示例里的['7', '4', ... , '\n'],其中的换行符会被转义成普通的\n字面量写入文件,不会生效为换行。 - 文件关闭操作写在了for循环内部:第一次循环执行完成后文件就被关闭,后续循环的写入操作会直接报错无法执行。
修正方案
- 替换
str(propkeyinfo)为','.join(map(str, propkeyinfo)),将拆分后的列表重新用逗号拼接为正常的行字符串,不会生成列表字面量格式。 - 使用
with上下文管理器操作文件,自动处理文件关闭,避免手动管理的错误。 - 统一处理换行逻辑,避免重复添加换行。
修正后完整代码
# 读取文件内容到数组,路径前加r避免Windows路径转义问题 with open(r"D:\pythonProject\monop\propertyinfo.txt", "r", encoding="utf-8") as propinfo: propinfolines = propinfo.readlines() # 提取目标行并修改 desiredline = propinfolines[players[playerturn].squareID + 1] propkeyinfo = desiredline.split(',') propkeyinfo[14] = str(playerturn) # 确保修改的位置是字符串类型,适配join操作 # 拼接为正常行字符串回写数组 propinfolines[players[playerturn].squareID + 1] = ','.join(propkeyinfo) # 统一写回文件 with open(r"D:\pythonProject\monop\propertyinfo.txt", "w", encoding="utf-8") as propinfo: for i in range(41): line = propinfolines[i].rstrip('\n') # 先去掉原有换行,避免重复 propinfo.write(line + '\n') # 统一添加换行
补充说明
如果不需要给所有行统一加换行,只想给修改后的行加换行,只需保留你原本的判断逻辑即可,只要确保拼接行的时候用join而不是str(列表),就不会出现字面量\n的问题。
内容的提问来源于stack exchange,提问作者Freddie Moore
相关产品推荐
相关产品推荐

