【Python基础】S01E12 json 文件简单处理

S01E12 文件(下)

  • json 数据基本处理
    • 读取 json 数据
    • 写入 json 数据
  • 一个应用场景

本文将主要围绕 json 格式字符串的读取与存储做介绍。关于普通 txt 文件的读写,请见:【S01E11 文件(上)】:https://xu-hongduo.blog.csdn.net/article/details/133377596

json 数据基本处理

读取 json 数据

我们使用 json.loads() 来读取 json 文件 information.json

information.json

{
  "name": "John",
  "age": 30,
  "city": "New York"
}

read_json.py

import json

with open('information.json', 'r') as file:
    # 使用 json.load() 函数加载JSON数据
    data = json.load(file)

print(data)

>>> {'name': 'John', 'age': 30, 'city': 'New York'}

写入 json 数据

我们使用 json.dumps() 来存储 json 数据到文件 output.json

import json

data_to_write = {
    'name': 'John',
    'age': 30,
    'city': 'New York'
}

with open('output.json', 'w') as file:
    # 使用json.dump()函数将数据写入JSON文件
    json.dump(data_to_write, file)

一个应用场景

用户输入名称。如果记录用户名的文件 username.json 中存在该用户,则输出 Welcome, {username}。如果没有找到,则自动将用户名记录到 username.json 中。

import json
import os

def check_user(username):
    try:
        with open('username.json', 'r') as file:
            existing_users = json.load(file)
            if username in existing_users:
                return True
            else:
                return False
    except (FileNotFoundError, json.decoder.JSONDecodeError):
        return False

def main():
    username = input("请输入用户名: ")
    if check_user(username):
        print(f"Welcome, {username}")
    else:
        print(f"用户 {username} 不存在,将其录入到username.json文件中")
        existing_users = []

        # 如果文件存在,尝试读取已有的用户
        if os.path.exists('username.json'):
            try:
                with open('username.json', 'r') as file:
                    existing_users = json.load(file)
            except json.decoder.JSONDecodeError:
                pass

        existing_users.append(username)

        with open('username.json', 'w') as file:
            json.dump(existing_users, file)

if __name__ == "__main__":
    main()

上述代码中使用了 try-except 代码块,该代码块的作用是不确定是否会发生错误,但是发生错误时,程序不会因为错误直接退出运行,而是转而运行 except 中内容并继续向下执行。

有关于 try-except 的内容,请看下篇博文:【S01E13 Python异常】


祝大家、国家2023年中秋节、国庆节双节快乐!
北京海淀西三旗
2023.9.28

你可能感兴趣的:(#,Python,知识储备,python,json,开发语言)