如何强制Python的file.write()在Windows中使用与Linux相同的新行格式(“\ r \ n”与“\ n”)?

我有简单的代码:

f = open('out.txt','w') f.write('line1\n') f.write('line2') f.close() 

代码在Windows上运行,并给出文件大小12 bytes ,而Linux给出11 bytes原因是新行

在linux中是\n ,为了胜利,它是\r\n

但是在我的代码中,我将新行指定为\n 。 问题是我怎样才能使Python保持新行\n总是,而不是检查操作系统。

您需要以二进制模式打开文件,即wb而不是w 。 如果你不这样做,行尾字符会自动转换成操作系统特定的字符。

这里是关于open() Python引用的摘录。

默认情况下是使用文本模式,可以在写入时将'\ n'字符转换为平台特定的表示forms,然后重新读取。

您仍然可以使用textmode,并使用关键字参数换行强制换行换行

 f = open("./foo",'w',newline='\n') 

用Python 3.4.2testing。

编辑:这不适用于Python 2.7。