Python 存储数据-json

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

写入json

import json

file = 'number.json'
number = [2, 3, 4, 5, 6, 7, 88]

with open(file, 'w') as f:
    json.dump(number, f)

 

读取json

import json

file = 'number.json'

with open(file) as f:
    content = json.load(f)

print(content)

 

如果文件中有名字记录,则 打印一条 欢迎信息 ,如果没有则将该名字保存到文件中

复制代码
file = 'number.json'

try:
    with open(file) as f:
        name = json.load(f)

except FileNotFoundError:
    name = input("What's your name?:")
    with open(file, 'w') as f:
        json.dump(name, f)
else:
    print(f'Welcome {name}')
复制代码

 

10.4.3 重构

你经常会遇到这样的情况:代码能够正确地运行,但通过将其划分为一系列完成具体工作的函数,还可以改进。这样的过程称为重构。重构让代码更清晰、更易于理解、更容易扩展。

复制代码
import json

def get_stored_username():
    """如果存储了用户名,就获取它。"""
    filename = 'username.json'
    try:
        with open(filename) as f:
            username = json.load(f)
    except FileNotFoundError:
        return None
    else:
        return username


def get_new_username():
    """提示用户输入用户名。"""
    username = input("What is your name? ")
    filename = 'username.json'
    with open(filename, 'w') as f:
        json.dump(username, f)
    return username


def greet_user():
    """问候用户,并指出其名字。"""
    username = get_stored_username() 
    if username:
        print(f"Welcome back, {username}!")
    else:
        username = get_new_username() 
        print(f"We'll remember you when you come back, {username}!")


greet_user()
复制代码

 

在上面的这个函数例子中,这个最终版本中,每个函数都执行单一而清晰的任务。

  我们调用greet_user(),它打印一条合适的消息:要么欢迎老用户回来,要么问候新用户。

  为此,它首先调用get_stored_username(),该函数只负责获取已存储的用户名(如果存储了的话)。

  最后在必要时调用get_new_username(),该函数只负责获取并存储新用户的用户名。要编写出清晰而易于维护和扩展的代码,这种划分在以上这个了例子这个最终版本中,每个函数都执行单一而清晰的任务。我们调用greet_user(),它打印一条合适的消息:要么欢迎老用户回来,要么问候新用户。为此,它首先调用get_stored_username(),该函数只负责获取已存储的用户名(如果存在的话)。最后在必要时调用get_new_username(),该函数只负责获取并存储新用户的用户名。要编写出清晰而易于维护和扩展的代码,这种划分必不可少。

 

posted @   茶叶蛋蛋  阅读(57)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示