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

时间:2014-02-24 10:19:14

标签: python newline

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

为什么这个代码:

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

导致CRLF换行?

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

是否有某种方法可以强制Python使用我在字符串中指定的\n换行符?

1 个答案:

答案 0 :(得分:5)

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

with open('file.txt', 'wb') as f:

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

with open('file.txt', 'w', newline='') as f: