python的資料儲存

Federico發表於2017-09-18

Python儲存資料

使用json.dump()和json.load()

  1. 不管專注的是什麼,程式都把使用者提供的資訊儲存在列表和字典等資料結構中。使用者關閉程式時,你幾乎總是要儲存他們提供的資訊;一種簡單的方式是使用模組json來儲存資料。

    json(JavaScript object notation)格式最初是為JavaScript開發的,但隨後成了一種常見的個是,被包括在Python在內的眾多語言採用。

  2. 函式json.dump()接收兩個實參:要儲存的資料以及可用於儲存資料的檔案物件。
 import json  
 numbers =  [2,3,4,5,6]
 filename = 'numbers.json'
 with open(filename, 'w') as f_obj:
         json.dump(nuberms, f_obj)
  1. 函式json.load()將列表讀取到記憶體
import json
filename = 'numbers.json'
with open(filename) as f_obj:
        numbers = json.load(f_obj)
print(numbers)

儲存和讀取使用者生成的資料

  1. 儲存使用者的名字
import json
username = input("what is your name?:")
filename = 'uasername.json'
with open(filename, 'w' ) as f_obj:
        json.dump(username, f_obj)
        print("We'll remember you when you come back , "  + username + "!")
  1. 讀取被儲存的使用者名稱
import json
filename = 'username.json'
with open(filename) as f_obj:
        username = json.load(f_obj)
        print("Welcome back, " + username + "!")
  1. 以前儲存了使用者名稱就載入它,否則就提示使用者名稱並儲存它
import json
filename = 'username.json'
try:
    with open(filename) as f_obj:
        username = json.load(f_obj)
except FileNotFoundError:
    username = input("What is your name ?")
    with open(filename, 'w') as f_obj:
        json.dump(username, f_obj)
        print("We'll remember you when you come back," + username + "!")
else:
    print("Welcome back, " + username + "!")

重構

程式碼可以正確的執行,但可做進一步的改進------將程式碼劃分為一系列完成具體工作的函式。這樣的過程被稱為重構。

要重構上述指令碼,可將其大部分邏輯放到一個或多個函式中

import json
def get_stored_username():
    """如果儲存了使用者名稱,就獲取它"""
    filename = 'username.json'
    try:
         with open(filename) as f_obj:
             username = json.load(f_obj)
    except FileNotFoundError:
        return None
    else:
        return username

def get_new_usename():
    """提示使用者輸入使用者名稱"""
    username = input("What is your name ? ")
    filename = 'username.json'
    with open(filename, 'w' ) as f_obj:
        json.dump(username, f_obj)
    return username

def greet_user():
    """問候使用者,並指出其名字"""
    username =  get_stored_username()
    if username:
        print( "Welcome back, " + username + "!")
    else:
         username = get_new_usename()
         print("We'll remember you when you come back," + username  +  "!")


greet_user()

上述指令碼實現了當username.json中存在使用者名稱時獲取問候,不存在使用者名稱或者不存在這個檔案時,重新獲取使用者名稱,並對新使用者給出歡迎提示。

相關文章