Python在编写文件时修改换行符

Cyc*_*mic 1 python newline

我正在开发一个跨平台的Python应用程序,我的开发环境是Windows.由于与以前版本的兼容性问题,我必须使用Linux风格的行结尾.

为什么这个代码:

lines = ['hello world','bye']
with open('file.txt','w') as f:
    f.write('\n'.join(lines))
Run Code Online (Sandbox Code Playgroud)

导致CRLF换行?

我的Python文件是utf-8编码的,但我认为这不是问题所在.

有没有办法强制Python使用\n我在字符串中指定的换行符?

Mar*_*ers 5

在文本模式下打开文件时,行分隔符将标准化为平台默认值.在Windows上,即\r\n.如果您不希望发生这种情况,请以二进制模式打开文件:

with open('file.txt', 'wb') as f:
Run Code Online (Sandbox Code Playgroud)

在Python 3上,您还可以将newline关键字设置''为禁用换行重写:

with open('file.txt', 'w', newline='') as f:
Run Code Online (Sandbox Code Playgroud)