繁体   English   中英

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

[英]How can I force Python's file.write() to use the same newline format in Windows as in Linux (“\r\n” vs. “\n”)?

我有简单的代码:

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 现在的问题是如何才能让蟒蛇保持新行\\n始终,而不是检查操作系统。

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

以下是关于open() Python 参考的摘录。

默认是使用文本模式,它可以在写入和读取时将 '\\n' 字符转换为特定于平台的表示。

您仍然可以使用 textmode 并且当您打印字符串时,您可以在打印前删除最后一个字符,如下所示:

f.write("FooBar"[:-1])

用 Python 3.4.2 测试。

编辑:这在 Python 2.7 中不起作用。

这是一个旧答案,但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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM