我有简单的代码:
f = open('out.txt','w')
f.write('line1\n')
f.write('line2')
f.close()
代码在 Windows 上运行并给出文件大小
12 bytes
,Linux 给出 11 bytes
原因是新线
在 Linux 中是
\n
,在 Win 中是 \r\n
但在我的代码中,我将新行指定为
\n
。问题是如何让 python 始终保持新行\n
,而不检查操作系统。
您需要以二进制模式打开文件,即
wb
而不是w
。如果不这样做,行尾字符将自动转换为操作系统特定的字符。
open()
的 Python 参考摘录。
默认使用文本模式,可能会转换 ' ' 字符在写入时转换为特定于平台的表示并在读取时返回。
Du kannst den Textmodus verwenden 和 trotzdem
'\n'
als Zeilenumbruch verwenden。 Dafür musst du den Parameter newline
setzen wenn du die Datei öffnest.
f = open("./foo",'w',newline='\n')
f.write("FooBar")
获取 Python 3.4.2 的测试。 Python 2.7 中的 Funktioniert nicht.
这是一个旧答案,但是
io.open
函数可以让您指定行结尾:
import io
with io.open('tmpfile', 'w', newline='\r\n') as f:
f.write(u'foo\nbar\nbaz\n')