iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
0

在使用者關閉程式時,我們都會希望把這些資訊保存下來,今天我們會用到json模組來儲存資料,json模組能讓我們把簡單的python資料結構轉成到檔案內,並在再次執行的時候載入檔案的資料

儲存和載入

  • json.dump( ) 儲存

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( ) 載入

現在我們在編寫一隻程式,使用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譯


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

1 則留言

2
Chiron824
iT邦新手 5 級 ‧ 2019-04-03 14:00:14

最後一個範例的json.dump(file)應該是json.dump(username,file)嗎

我要留言

立即登入留言