如何使用Python(在Windows上)写入文件并使用Unix行尾字符?
例如:
f =打开('file.txt','w') f.write('hello \ n') f.close()
Python自动替换\n为\r\n。
\n
\r\n
请参阅:现代方式:答案。
现代方式:使用newline =’‘ 使用newline=关键字参数io.open()可以使用Unix风格的LF行尾终止符:
newline=
io.open()
Unix
import io f = io.open('file.txt', 'w', newline='\n')
这适用于Python 2.6+。在Python 3中,您还可以使用内置open()函数的newline=参数代替io.open()。
open()
io.open()
旧方法:二进制模式 防止换行符转换的旧方法(在Python 3中不起作用)是以二进制模式打开文件,以防止换行符的转换:
f = open('file.txt', 'wb') # note the 'b' meaning binary
但在Python 3中,二进制模式将读取字节而不是字符,因此它将无法执行您想要的操作。当您尝试在流上执行字符串I / O时,您可能会获得异常。(例如,“ TypeError:’str’不支持缓冲区接口”)。
以二进制形式打开文件,以防止转换行尾字符:
f = open('file.txt', 'wb')
引用Python手册:
在Windows上,附加到模式的’b’以二进制模式打开文件,因此也有’rb’,’wb’和’r + b’之类的模式。Windows上的Python区分文本文件和二进制文件。读取或写入数据时,文本文件中的行尾字符会自动更改。这种对文件数据的幕后修改对于ASCII文本文件而言是很好的选择,但它会破坏JPEG或EXE文件中的二进制数据。读写此类文件时,请务必小心使用二进制模式。在Unix上,将’b’附加到该模式没有什么坏处,因此您可以将其独立地用于所有二进制文件。