在使用者關閉程式時,我們都會希望把這些資訊保存下來,今天我們會用到json模組來儲存資料,json模組能讓我們把簡單的python資料結構轉成到檔案內,並在再次執行的時候載入檔案的資料
json.dump( )的使用方法是它會接收兩個引數,第一個是儲存的資料,第二個是用來儲存資料的檔案物件
( 儲存數字 ) 範例如下 :
import json
numbers=[1,2,3,4,5,6]
filename="number.json" # 指定要把numbers串列存到number.json檔中
with open(filename,"w") as file: # 以寫入模式開啟檔案才可以將資料儲存進去
json.dump(numbers,file) # 將numbers串列存到number.json檔
上面的程式碼沒有顯示輸出結果,但我們可以去開啟number.json檔看看結果
↓ number.json檔
[1,2,3,4,5,6]
現在我們在編寫一隻程式,使用json.load( )把numbers串列獨到記憶體內
( 載入數字 ) 範例如下 :
import json
filename="number.json" # 這行我們要確定是不是跟前面的讀取檔案名稱相同
with open(filename) as file: # 以讀取模式開啟檔案(若沒有第二個參數都是預設成讀取模式)
numbers=json.load(file) # 用json.load()載入放在number.json檔裡面的資料,然後將它存到numbers變數中
print(numbers)
輸出結果 :
[1,2,3,4,5,6]
我們可以用上面說的json.dump( )和json.load( )來儲存和載入使用者的資料,如果沒有用json模組來用的話,可能關閉程式時使用者輸入的資訊就會不見,有用json模組來處理的話,就算關閉程式資料還是會儲存在檔案中,以便下次開啟時使用
範例如下 :
import json
filename="username.json"
try:
# 在try中放json.load()是因為如果username.json檔已經存在的話,就直接將名字載入記憶體中
with open(filename) as file:
username=json.load(file)
except FileNotFoundError:
# 如果檔案找不到時我們會提供使用者輸入訊息並寫入檔案中以便再開啟時可以紀錄原先輸入的名字
username=input("What's your name ?")
with open(filename,"w") as file:
username=json.dump(file)
print("We'll remember you when you come back,"+username)
else:
print("Welcome back,"+username)
( 沒有檔案時第一次執行 )輸出結果 :
What's your name ?weitng
We'll remember you when you come back,weitng
( 有檔案後第二次執行 )輸出結果 :
Welcome back,weitng
附上排版較精美的
HackMD網址:https://hackmd.io/wWuPeNmlSWyC79q2YAcPhw
資料來源:<<python程式設計的樂趣>>-Eric Matthes著/H&C譯