使用json.dump()和json.load()编码和解码JSON数据。
使用json.dump()存储一组数字,编码JSON数据
import json
numbers = [2,3,5,7,11,13]
filename = 'numbers.json'
with open(filename,'w') as f_obj:
#使用json.dump()将数字列表存储到文件numbers.json中
json.dump(numbers,f_obj)
使用json.load()将列表读取到内存中。解码JSON数据
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? ")
filename2 = 'username.json'
with open(filename2,'w') as f2_obj:
json.dump(username,f2_obj)
print("We will remember you when you come back, " + username + "!")
如果以前存储了用户名,就加载它;否则,就提示用户输入用户名并存储它:
import json
filename3 ='username3.json'
try:
with open(filename3) as f3_obj:
username3 = json.load(f3_obj)
except FileNotFoundError:
username3 = input("What is your name? ")
with open(filename3,'w') as f3_obj:
json.dump(username3,f3_obj)
print("We will remember you when you come back, " + username3 + "!")
else:
print("Welcome back, " + username3 + "!")
重构上面的代码,使之更易于阅读:
import json
def get_stored_username():
filename3 ='username3.json'
try:
with open(filename3) as f3_obj:
username3 = json.load(f3_obj)
except FileNotFoundError:
return None
else:
return username3
def get_new_username():
username3 = input("What is your name? ")
filename3 ='username3.json'
with open(filename3,'w') as f3_obj:
json.dump(username3,f3_obj)
return(username3)
def greet_user():
username3 = get_stored_username()
if username3:
print("Welcome back, " + username3 + "!")
else:
username3 = get_new_username()
print("We will remember you when you come back, " + username3 + "!")
greet_user()