python - python 3在写入文件时用\n替换换行符\r
问题描述
我需要在文件中写入一些文本,同时包含换行符 \r 和 \n 的混合,并且我想保留两者。但是,在 python 3 中,当我将此文本写入文件时,\r 的所有实例都替换为 \n。此行为与 python 2 不同,如下面的输出所示。我能做些什么来阻止这种替换?
这是代码:
import string
printable=string.printable
print([printable])
fopen=open("test.txt","w")
fopen.write(printable)
fopen.close()
fopen=open("test.txt","r")
content=fopen.read()
print([content])
fopen.close()
这是输出,当我在 python 2 和 python 3 上运行代码时:
(base) Husseins-Air:Documents hmghaly$ python2.7 test_write_line_break.py
['0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c']
['0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c']
(base) Husseins-Air:Documents hmghaly$ python test_write_line_break.py
['0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c']
['0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\n\x0b\x0c']
解决方案
问题是被称为“通用换行符”的 python 功能,它将源文件中的任何类型的换行符转换为输出中的任何行分隔符。newline=''
您可以在 open 函数中禁用此行为:
fopen=open("test.txt", "w", newline='')
...
fopen=open("test.txt", "r", newline='')
推荐阅读
- c++ - 当我尝试将 OpenCV4.1 程序转换为 wasm 时,出现以下错误
- python - Python psutil如何找到子进程
- python - 根据另一列中的特定值对一列中的值求和
- c++ - 在双向链接的循环列表/环中实现迭代器(.end() 的问题)
- sql - 我正在尝试在 ORACLE 数据库中设置一个表,当我尝试运行此命令时出现无效数据类型错误:
- sql - 触发日期转换失败
- python-3.x - ModuleNotFoundError:没有名为“xmltodict”的模块
- javascript - 使用展开语法替换字典中的项目
- server - 使用信号句柄关闭 flask-socketio 服务器
- ruby - 如何禁用 ruby bundler 文本输出?