1. 程式人生 > >Python中的open()方法總結

Python中的open()方法總結

總結Python中的open()方法

message= {'企業即時通訊': 'aaa', '企業名稱': 'bbb'}

with open("..\\r.txt", "a", encoding="utf-8") as f:

f.write(json.dumps(message, ensure_ascii=False)+'\n')
f.close()

 

opne()的第一個引數是路徑+檔名,第二個引數是mode開啟模式,也就是說你要只讀,還是隻寫,還是讀寫,第三個引數是編碼格式。

Mode開啟模式的值:

Mode

描述

r

只讀,待開啟檔案必須存在

w

只寫,如果待開啟檔案已存在,會先清空,不存在則建立

a

只寫,如果檔案已存在,不會清空,接著往後追加

r+

讀寫,檔案必須存在

w+

讀寫,如果待開啟檔案已存在,會先清空,不存在則建立

a+

讀寫,如果檔案已存在,不會清空,接著往後追加

 

如果想寫入的是圖片或者視訊音訊等,那麼你需要用二進位制形式寫入,也就是在mode的後面加一個b,比如下面這段就是將photo這張圖寫入a.png

import requests

photo = requests.get("https://mail.263.net/custom_login/images/domain_logo.png")

with open("..\\a.png", "wb") as f:

f.write(photo.content)        # photo.content是photo這張圖的二進位制寫法
f.close()

 

with open("..\\a.png","r+b") as ff:

    pngdata = ff.read()

print(pngdata)    #打印出來的和photo.content內容一樣

 

注意為什麼我要用with open as這種方式開啟檔案:

因為如果不使用這種方式,使用最簡單的 f = open(“a.png”),必須記得寫f.close().而且如果a.png沒有找到,會報IOError,這個時候f.close()就呼叫不到,如果想要無論有沒有開啟檔案都執行關閉檔案,就要手動加上try finally…

With open as就不會這麼麻煩,會自動幫我們呼叫f.close(),所以程式碼中可以不必寫f.close()。

 

事例中的json.dumps(message, ensure_ascii=False)這句話,因為我的message是一個字典,如果要把message寫入檔案,需要轉為字串,所以使用json.dumps()方法,如果想要將dict型別寫入json檔案也必須用這個方法轉換一下,而ensure_ascii=False這個引數是為了寫入漢字的時候就是寫入漢字,而不是ucs2編