Python儲存資料
使用json.dump()和json.load()
不管專注的是什麼,程式都把使用者提供的資訊儲存在列表和字典等資料結構中。使用者關閉程式時,你幾乎總是要儲存他們提供的資訊;一種簡單的方式是使用模組json來儲存資料。
json(JavaScript object notation)格式最初是為JavaScript開發的,但隨後成了一種常見的個是,被包括在Python在內的眾多語言採用。
- 函式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)
- 函式json.load()將列表讀取到記憶體
import json
filename = 'numbers.json'
with open(filename) as f_obj:
numbers = json.load(f_obj)
print(numbers)
儲存和讀取使用者生成的資料
- 儲存使用者的名字
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 + "!")
- 讀取被儲存的使用者名稱
import json
filename = 'username.json'
with open(filename) as f_obj:
username = json.load(f_obj)
print("Welcome back, " + username + "!")
- 以前儲存了使用者名稱就載入它,否則就提示使用者名稱並儲存它
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中存在使用者名稱時獲取問候,不存在使用者名稱或者不存在這個檔案時,重新獲取使用者名稱,並對新使用者給出歡迎提示。