python学习之存储数据

使用模块json来存储保存用户数据。存储dump,加载load
1.使用json.dump()和json.load()
编写一个存储一组数字的程序

#存储数据
import json #导入模块
numbers=[1,2,3,4,5,6] #创建数字列表
filename='numbers.json'#生成文件,.json为拓展名
with open(filename,'w') as f_obj: #打开文件
    json.dump(numbers,f_obj) #将数字列表numbers存到文件f_ojb(numbers.json)中

json.dump()有两个参数,一个是要存储的数据,一个是用于存储数据的文件对象

#将数字读到内存中
import json #导入模块
filename='numbers.json'#将数字列表以json格式存在文件,文件名filename
with open(filename) as f_obj:
    
    numbers = json.load(f_obj)#数据加载出来
print(numbers)

[1, 2, 3, 4, 5, 6]

2.保存和读取用户生成的数据

import json
username=input("what is you name ?")
filename="username.json"
with open(filename,"w") as f_obj:
    json.dump(username,f_obj)  #存储
    print("we will rememner you when you come back , "+username)

what is you name ?小小慧
we will rememner you when you come back , 小小慧

#对被存储的名字,发出问候
import json
filename="username.json" #程序使用了上面的文件内容
with open(filename) as f_obj:
    username=json.load(f_obj)#加载 
    print("welcome back, "+username)

welcome back, 小小慧

#将以上两个程序合并 try—except
import json
filename="username_2.json" 
#如果用户存储过名字就加载问候他否则就提示用户输入并存起来
try: #如果username_2.json文件存在,就加载问候他,
    with open(filename) as f_obj:
        uersname=json.load(f_obj)
   
except FileNotFoundError: #文件不存在,就提示输入
    username=input("what is you name ?")
    with open(filename,"w") as f_obj:
        json.dump(username,f_obj)  #存储
        print("we will rememner you when you come back , "+username)

else:
    print("welcome back, "+username)#文件存在
#重构为函数,各司其职,代码更加清晰易懂
import json
def get_sorted_username():
    '''如果存储了用户就获取他'''
    filename="username2.json" 
    try:
        with open(filename) as f_object:
            username2=json.load(f_object)
    except FileNotFoundError:
        return None
    else:
        return username2
    
def get_new_username():
    username2=input("what is you name ?")
    filename="username2.json"
    with open(filename,"w") as f_object:
        json.dump(username2,f_object)  #存储
        return username2



def greet_user():
    '''问候用户并指出名字'''
    username2=get_sorted_username()
    if username2:
        print("welcome back, "+username2)
    else:
        username2=get_new_username()
        print("we will rememner you when you come back , "+username2)
greet_user()

第一次运行,会询问名字,第二次运行会问候,。要编写出清晰而且易于维护和拓展的代码,这种划分的工作必不可少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值