如何强制 Python 的 file.write() 在 Windows 中使用与 Linux 中相同的换行格式(“ “对” “)?[重复]

问题描述 投票:0回答:3

我有简单的代码:

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
,而不检查操作系统。

python newline
3个回答
106
投票

您需要以二进制模式打开文件,即

wb
而不是
w
。如果不这样做,行尾字符将自动转换为操作系统特定的字符。

这里是关于

open()
的 Python 参考摘录。

默认使用文本模式,可能会转换 ' ' 字符在写入时转换为特定于平台的表示并在读取时返回。


27
投票

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.


11
投票

这是一个旧答案,但是

io.open
函数可以让您指定行结尾:

import io
with io.open('tmpfile', 'w', newline='\r\n') as f:
    f.write(u'foo\nbar\nbaz\n')

来自:https://stackoverflow.com/a/2642121/6271889

© www.soinside.com 2019 - 2024. All rights reserved.