我在Windows上使用Python 3.6.3。
当我尝试将单个多行字符串打印到这样的文件中时:
with open('test1.txt', mode='w') as f:
f.write('test\r\ntest\r\n')
然后
test1.txt
最终将包含test\r\r\ntest\r\r\n
而不是test\r\ntest\r\n
。一种获得所需输出的解决方法如下所示:
with open('test2.txt', mode='w') as f:
for line in 'test\r\ntest\r\n'.splitlines():
print(line, file=f)
为什么会这样呢?
最佳答案
好吧,事实证明,正确陈述一个问题通常会导致答案出现:
出现这种现象的原因是在Python的universal newline中找到的(从TextIOWrapper
上的PEP 3116引用):
这意味着,在打开文件进行写入时,可以将newline
参数设置为''
以获得所需的输出:
with open('test3.txt', mode='w', newline='') as f:
f.write('test\r\ntest\r\n')