![](/img/trans.png)
[英]Python file.write(email + '\n') NameError: name 'email' is not defined
[英]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')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.