當我們想要處理文字檔中的資訊,第一步是要把資訊讀取到記憶中,我們可以一次讀取整個檔案的內容,也可以每次一行的方式逐步讀取
我們會用到open()函式接收一個引數,引數就是放想要開啟的檔案名稱,python會在目前執行的檔案所在的資料夾中尋找檔案,然後存到一個變數中,而read()方法會讀取整個檔案的內容,但是read()到達檔案尾端時會返回一行空字串,這時我們就可以用到第二天教的rstrip()刪除右邊空白來處理 !
↓ number.txt檔
123
456
789
↓ read_number.txt檔
with open("number.txt") as file_object: # 開啟number.txt檔並將其存到file_object中
content=file_object.read() # 讀取file_object的所有內容
print(content.rstrip()) # 將印出的檔案刪除read()返回的一行空白
輸出結果 :
123
456
789
p.s 如果檔案不釋放在同個資料夾中的話記得要給完整路徑才能讀取喔!
講到逐行就會想到for迴圈,所以我們可以用for迴圈來處理
↓ number.txt檔
123
456
789
↓ read_number.txt檔
with open("number.txt") as file_object:
for line in file_object:
print(line)
輸出結果 :
123
456
789
為甚麼上面的輸出結果回多出那麼多空白呢 ? 因為我們這次沒有在read_number.txt的輸出地方加上rstrip(),所以當for迴圈抓到一行文字輸出後,read()會幫我們加一個空行,如果想要讓空行消失,那就寫print(line.rstrip())就好囉
當我們把文字寫入檔案後,就算關掉顯示程式輸出的終端視窗,輸出的結果還是會保存,這時我們呼叫open()需要放入兩個引數,第一個引數是要開啟的檔案名,第二個引數是要告知python以甚麼模式來開啟檔案
w | r | a | r+ |
---|---|---|---|
讀取模式 | 寫入模式 | 附加檔案 | 可讀取寫入模式 |
如果想要寫入的檔案不存在,open()函式會自動建立,不過以寫入模式有一點要注意,如果要寫入的檔案已經存在的話,python會自動清空檔案的內容,再將寫入的文字傳進去
↓ write_number.txt檔
filename="number.txt"
with open(filename,"w") as file_object: # 以寫入模式開啟number.txt檔
file_object.write("9487") # 寫入第一行
file_object.write("666") # 寫入第二行
↓ number.txt檔
9487
666
p.s python只能把字串寫入文字檔中,要把數值資料儲存到文字檔中,必須先使用str()函式轉換成字串
當我們想要在檔案後面加內容而不適覆蓋原本的內容時,可以用附加模式來開啟檔案,然後寫入的文字是加在檔案尾端,我們用上面的number.txt檔來示範
↓ attach_number.txt檔
filename="number.txt"
with open(filename,"a") as file_object: # 以附加模式開啟number.txt檔
file_object.write("01234")
file_object.write("56789")
↓ number.txt檔
9487
666
01234
56789
附上排版較精美的
HackMD網址:https://hackmd.io/BTJDMS3bSoS9wWE8V15ngg?edit
資料來源:<<python程式設計的樂趣>>-Eric Matthes著/H&C譯