iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Software Development

燃燒大三的成果發表系列 第 14

燃燒大三的成果發表第十四天 - 檔案處理

  • 分享至 

  • xImage
  •  

大家好,今天我要介紹一下如何在python做檔案處理,在python中做檔案處理,雖然說不上經常用到,但是肯定會用到,而且用到的時候會非常好用。

f = open('iron_competition.txt', 'w', encoding="utf-8")
"""
我們可以在第二個參數進行開啟時權限設定
'r' :用唯讀模式開啟檔案
'w' :用唯寫模式開啟檔案
'a' :任何寫入檔案的資料會自動被加入到檔案的最後
'r+' :開啟檔案並可以進行讀取和寫入
"""
data = "鐵人賽比賽"
f.write(data)
f.close

一個簡單的完整的檔案處理流程就完成了,在open()的時候參數都要特別注意一下,像是檔名的名稱以及位置,權限的設定,上述其中一個參數只要設錯了,都會造成無法開啟,或者是能開,但是不能沒辦法寫入。開啟之後寫入資料,看起來都很正常,在最後這部分一定要進行close,他才會正常的關閉。

但是每次open之後最後都要寫上一行close(),有沒有想過這樣很麻煩,很希望可以每次在我用完這個檔案的時候就自動關閉,這樣還可以少寫一行程式,其實是可以的,這邊有一個with as的用法。

with open('iron_competition.txt', 'w', encoding="utf-8") as f:
    data = "鐵人賽比賽"
    f.write(data)
    print("關閉前", f.closed)  # 關閉前 False
print("關閉前", f.closed)  # 關閉後 True

這邊除了可以使用write寫入一段字串,也可以使用writelines寫入一段list or set

with open('iron_competition.txt', 'r', encoding="utf-8") as f:
    read_data = f.read()  # 讀取整個檔案,參數可設定size
    print(read_data)
    print("關閉前", f.closed)  # 關閉前 False
print("關閉前", f.closed)  # 關閉後 True

read可以查看指定檔案大小的資料,預設會讀取整個檔案,也能夠使用readline一行一行讀取,也可以使用readlines一次讀取整個檔案存成一個列表

with as除了可以用在檔案的開關以外,其實只要有開->過程->關,有固定要開關的程式都可以使用with as,像是用在和資料庫連線池上,概念上可能會長這樣:

class Connection():
    def __init__(self):
        self.object = None

    def __enter__(self):
        print("啟動的程式碼")
        self.object = "conntected"
        return self.object
    
    def __exit__(self, type, value, trackback):
        print("關閉的程式碼")
        self.object = "disconntected"
        return self.object

with Connection() as c:
    print("可以透過回傳的的物件進行操作")
    
# 啟動的程式碼
# 可以透過回傳的的物件進行操作
# 關閉的程式碼

上一篇
燃燒大三的成果發表第十三天 - 字串格式化
下一篇
燃燒大三的成果發表第十五天 - 其他用法(上)
系列文
燃燒大三的成果發表30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言