我正在开发一个跨平台的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
换行符?
答案 0 :(得分:5)
在文本模式下打开文件时,行分隔符将标准化为平台默认值。在Windows上,即\r\n
。如果您不希望这种情况发生,请以二进制模式打开文件:
with open('file.txt', 'wb') as f:
在Python 3上,您还可以将newline
关键字设置为''
以禁用换行重写:
with open('file.txt', 'w', newline='') as f: