python关于json文件的读取写入实战

python+自动化 专栏收录该内容
7 篇文章 0 订阅

一、理解

为什么要用json模块的格式读取写入?
1、由于python默认读取write()写入read()文件的数据格式为字符串(str),不能读取写入列表、字典等类型数据,所以需要采用json数据格式来存储数据。
2、json数据格式在多种语言中通用,有利于分享数据。

二、python读取写入json格式分别有2种不同形式

1、json.dump()用于存储写入列表至list.json文件。

import json

numbers = [2,1,4,3,4,5]

file_name = "list.json"
with open(file_name,'w') as f:
     #写入方式1,等价于下面这行
    json.dump(numbers,f) #把列表numbers内容写入到"list.json"文件中
    
    #写入方式2
    #f.write(json.dumps(numbers))

在这里插入图片描述
2、json.load()读取本地的list.json文件。

import json

file_name = "list.json"

with open(file_name) as f:
    #读取方式1,等价于下面这行
    list = json.load(f)
    
    #读取方式1
    #list = json.loads(f.read())

    print(list)

在这里插入图片描述

三、json数据格式实战

实现功能:用户输入用户名,如果以前存储了用户名,就加载它,否则,就存储输入的用户名,并相应打印不同的问候提示语。

import json
import os

"""解析:判断json文件是否存在,获取文件中的列表,
判断输入的用户名是否已存在列表中,若存在,提示:欢迎回来!,
若不存在,提示:下次回来会记住!,并存储输入的用户名至文件中。"""

def search_file(filename):
    """封装判断name.json文件是否存在"""
    if os.path.exists(filename):
       #存在则直接调用函数search_username(),进一步验证用户名
       search_username()
    else:
        #文件不存在,则创建包含空列表(为了后面添加列表元素)的json文件,再调用search_username()
        names_list = []
        with open(filename,"w+") as f:
            json.dump(names_list,f)
        search_username()

def search_username():
    """封装判断用户名是否存在并存储、打印相应内容"""
    with open(filename,'r+') as f:
            names_list = json.load(f)

    if (username in names_list):
        print("Welcome back " + username + "!")
    else:
        with open(filename, 'w') as f:
            names_list.append(username)
            json.dump(names_list, f)
            print("We'll remember you when you come back, " + username + "!")
           
filename = "name.json"
username = input("what is name?\n ")
search_file(filename)

执行上述代码:
1、第一次输入新增用户名:chenyi,运行结果如下:
在这里插入图片描述
2、第二次输入已存在用户名:chenyi,运行结果如下:
在这里插入图片描述
此时name.json中的内容如下:
在这里插入图片描述

  • 1
    点赞
  • 0
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值