我在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')

09-30 13:06