簡體   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