Python 读写 Json 列表操作练习

作者: DreamOver | 来源:发表于2017-11-29 21:36 被阅读37次

Json 简单说就是 JavaScript 中的对象和数组,所以这两种结构就是对象和数组两种结构(参见Json的格式以及使用),对应 Python 中的字典和列表两种数据结构。明白这一点后就知道,Python 操作 Json 文件本质就是操作列表或字典。
今天写了一个 Python 读写 Json 中列表的小程序来做练习。本文不作基本操作的介绍,只是基本操作的一种实践训练,模拟向文档中写入姓名字符串并将之读取的操作。

import json

def get_stored_name():
    '''获取 json 文件中的对象'''
    try:
        with open("nameCollect.json", "r") as file_obj:
            name_lsit = json.load(file_obj)
    except FileNotFoundError:
        name_lsit = None
    file_obj.close()
    return name_lsit

def get_new_name():
    '''获取 json 文件中已有的列表,若文件不存在或文件为空,则创建一个空列表'''
    try:
        with open("nameCollect.json", "r") as file_obj:
            name_list = json.load(file_obj)    
    except FileNotFoundError:
        name_list = []
    if name_list is None:
        name_list = []
    '''新输入一个字符串并追加到列表末尾写入 json 文件中'''
    while True:
        username = input("Please input a name(enter \"q\" to exit):  ")
        if username != "q":
            name_list.append(username)
        else:
            break        
    with open("nameCollect.json", "w") as file_obj:
        json.dump(name_list, file_obj)
    file_obj.close()
    return name_list

def say_hi():
    '''向用户询问是执行读取操作还是执行写入操作'''
    while True:
        flg = input("Enter \"1\" to write names into the file, enter \"2\" to say \"Hi\": ")
        if flg == "1":  # 根据用户提示,向文件中写入数据
            get_new_name()
        elif flg == "2":    # 根据用户提示,从文件中读取字符串列表
            name_list = get_stored_name()
            if not name_list:
                name_list = get_new_name()  # 如果文件为空,提示用户向文件中写入数据
            break
        else:
            print("Sorry, you must input 1 or 2.")
    '''若文件为空,告知用户;若文件中列表不为空,则将元素 依次打印出来'''
    if name_list:
        for name in name_list:
            print("Hi, " + name + "!")
    else:
        print("Oh, you didn't input anything here.")
    
say_hi()

欢迎讨论。

相关文章

网友评论

    本文标题:Python 读写 Json 列表操作练习

    本文链接:https://www.haomeiwen.com/subject/okapbxtx.html