備忘錄_20160105(定位) 修改 回首頁

程式 2025-01-02 00:00:30 1735747230 100
python3 讀寫檔案,換行符號(crlf)議題

python3 讀寫檔案,換行符號(crlf)議題

●先說結論,再看細節

python 內部認定的換行符號是 lf
讀取文字檔案時,寬鬆認定 crlf, cr, lf 都是換行符號,但讀到記憶體中,通通改為 lf
寫入文字檔案時,依作業系統不同,將 lf 做個轉換,然後儲存
若是讀寫二進位檔案,則不做任何異動

●讀取文字檔案 'r'

f=open('a.txt', mode='r', encoding='utf-8')
line=f.readline()
f.close

當遇到 crlf ,認定一行結尾,讀入記憶體中,此時 crlf→lf
當遇到   cr ,認定一行結尾,讀入記憶體中,此時   cr→lf
當遇到   lf ,認定一行結尾,讀入記憶體中,此時   lf→lf

●寫入文字檔案 'w'

f=open('b.txt', mode='w', encoding='utf-8')
f.write(string1)
f.close

環境 win10 pro + python 3.9.7
此時 string1 的 lf 都會被換成 crlf,然後儲存

環境 linux raspberry pi 5.10.103 + python 3.7.3
此時 string1 的 lf 都會被換成 lf,然後儲存 (其實就是沒有任何異動)

●寫入二進位檔案 'wb'

f=open('b.txt', mode='wb')
f.write(string1.encode('utf-8'))
f.close

此時 cr, lf, crlf 都不會改變,因為是 binary 模式