備忘錄_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 模式