模块json存储数据,模块json让你能够把用户提供的信息存储在列表和字典等数据结构中,并在程序再运行时,加载该文件中的数据。
函数json.dump()用来存储数据,这个函数接收两个参数,一个是将要存储的数据,另一个是可用于存储数据的文件对象
函数json.load()用于加载数据,接收一个参数,就是存储数据的文件对象,
如下面的代码块演示了,用户首次运行程序时被提示输入自己的名字,并提醒用户下次再次运行程序时就会记住他的名字;如果用户不是首次运行程序,就会收到问候语,welcome back !
import json # 先导入模块json
def get_stored_username ():
"""如果存储了用户,就问候它"""
filename = 'username.json'
try:
with open(filename) as f_obj:
username = json.load(f_obj) # 尝试加载存储数据的文件username.json,检测是否已有存储的用户
except FileNotFoundError:
return None # 若找不到文件名,就返回None
else:
return username # 若找到文件名,就返回存储在文件对象中的用户名
def get_new_username ():
"""提示用户输入用户名"""
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_username()
print("We will remember you when you come back, " + username + " !")
greet_user() # 调用函数