iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
0

讀取檔案

當我們想要處理文字檔中的資訊,第一步是要把資訊讀取到記憶中,我們可以一次讀取整個檔案的內容,也可以每次一行的方式逐步讀取

  • 讀取整個檔案

我們會用到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譯


上一篇
DAY 17 類別的繼承與匯入
下一篇
DAY 19 例外處理
系列文
初學者Python的應用實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言