13
Python 2.7 documentation(和Python 3 documentation以及)包含有關os.linepath
功能下面一行:爲什麼在文本模式下編輯時不應該使用os.linesep?
時寫入文件在文本模式(默認)打開 不要使用os.linesep作爲行終止;
這是爲什麼?它與在二進制模式下使用它有什麼不同?
Python 2.7 documentation(和Python 3 documentation以及)包含有關os.linepath
功能下面一行:爲什麼在文本模式下編輯時不應該使用os.linesep?
時寫入文件在文本模式(默認)打開 不要使用os.linesep作爲行終止;
這是爲什麼?它與在二進制模式下使用它有什麼不同?
當您在文本模式下打開文件時,您寫入文件的任何\n
都會轉換爲適用於您所用平臺的相應行。
因此,舉例來說,如果你是在Windows上,其中os.linesep
是'\r\n'
,當你寫一個文件的\n
將獲得自動轉換爲\r\n
,你將結束與\r\r\n
寫入文件。
例如:
>>> import os
>>> os.linesep
'\r\n'
>>> with open('test.txt', 'w') as f:
... f.write(os.linesep)
...
>>> with open('test.txt', 'rb') as f:
... print repr(f.read())
...
'\r\r\n'
@mhlester他們沒有解釋它,因爲它是一個不必要的實現細節。在寫入文件時,所有'\ n'都會根據您的操作系統轉換爲'os.linesep'。讀取文件時,基於您的操作系統的所有'os.linesep'都會轉換爲'\ n'。 –
@AdamSmith:如果它是「不必要的實現細節」,爲什麼要提及它?如果你需要提及它,因爲人們做錯了錯誤的事情,這引起了太多的困惑,所以你可以解釋一下實現細節,以及爲什麼你不應該使用它...... – dangonfast