我有如下简单的代码:
f = open('out.txt','w')
f.write('line1\n')
f.write('line2')
f.close()
代码在windows上运行时给出文件大小12字节
,而在linux上给出11字节
。原因是换行符不同。
在linux中是\n
,而在Windows中是\r\n
但是在我的代码中,我将新行指定为\n
。问题是如何使Python始终保持新行为\n
,不检查操作系统。
我有如下简单的代码:
f = open('out.txt','w')
f.write('line1\n')
f.write('line2')
f.close()
代码在windows上运行时给出文件大小12字节
,而在linux上给出11字节
。原因是换行符不同。
在linux中是\n
,而在Windows中是\r\n
但是在我的代码中,我将新行指定为\n
。问题是如何使Python始终保持新行为\n
,不检查操作系统。
wb
而不是w
。如果不这样做,行尾字符将自动转换为特定于操作系统的字符。open()
的摘录。您仍然可以使用文本模式,当您打印字符串时,在打印之前删除最后一个字符,就像这样:
f.write("FooBar"[:-1])
使用Python 3.4.2测试通过。
编辑:这在Python 2.7中不起作用。
newline
,但 f.write()
命令在写入之间不会自动插入它。如何解决? - Nikhil VJwrite()
不要插入换行符。 - 12431234123412341234123\n
,它将被替换为我们配置的自定义换行符字符串。 - Nikhil VJio.open
函数允许您指定行尾标志:import io
with io.open('tmpfile', 'w', newline='\r\n') as f:
f.write(u'foo\nbar\nbaz\n')
outfile.write(bytes(line, "UTF-8"))
来避免出现TypeError: 'str' does not support the buffer interface
错误。 - Noumenon