![](/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.