Python写入文件时\r\n变为\r\r\n的问题及解决请求
问题原因
你遇到的问题是因为文本模式下Python会自动处理换行符转换:当用io.open以文本模式(w)打开文件并指定newline='\r\n'时,Python会把所有写入的\n替换成\r\n。你的输入字符串string里已经包含\r\n,其中的\n会被替换成\r\n,最终变成\r+\r\n即\r\r\n;后面追加的"\r\n"里的\n也会被同样替换,导致文件中出现多余的\r。
解决方案
改用二进制模式写入文件,这样Python不会对换行符做任何自动转换,直接保留原始的换行符格式。同时手动将字符串编码为utf-8-sig(和你原来指定的编码一致):
string = ['A', 'B', '\r', '\n', 'C', 'D'] print(''.join(string)) import io with io.open(r"test.txt", "wb") as f: content = ''.join(string) + "\r\n" f.write(content.encode('utf-8-sig'))
验证效果
用Notepad++打开生成的test.txt,换行符会保持为\r\n,同时不会修改原始的string内容。
内容的提问来源于stack exchange,提问作者dtlnor
相关产品推荐
相关产品推荐

