自学内容网 自学内容网

python编程Day13-json文件的操作

  • 文件操作

  • 按行读取文件 readline()

文件对象.readline() # 一次读取一行的内容,返回读取到的内容
read() 和 readline() 如果读到文件末尾,返回的都是 空字符串

with open('c.txt', 'r', encoding='utf-8') as f:
    buff = f.readline()
    print(buff)   # aaaaaa
    buff1 = f.readline()
    print(buff1)  # bbbbbb
    
  • 循环读取大文件
# with open('c.txt', 'r', encoding='utf-8') as f:
#     """不知道文件有多少行,要循环多少次,可以用 while True"""
#     while True:
#         """当文件读到最后,读完了,返回空字符串"""
#         buff = f.readline()
#         if buff == '':
#             break
#         else:
#             print(buff, end='')


# 第二种写法
with open('c.txt', 'r', encoding='utf-8') as f:
    while True:
        buff = f.readline()   # 文件读完了,返回空字符串
        if buff:    # 空字符串 是False,非空字符串是 True
            print(buff, end ='')
        else:
            break
"""
控制台输出结果为:
aaaaaa
bbbbbb
cccccc
dddddd
"""            
  • 打开文件的方式

r w a:称为是文本方式打开,适用于 文本文件,会对二进制进行编码转换。
rb wb ab:称为是二进制方式打开,可以打开文本文件和二进制文件,但是 二进制文件只能使用 二进制方式 打开,同时不能传递 encoding 参数

  • json 文件

1、json 文件的本质也是文本文件,就可以直接使用 read和write 去进行操作。
2、json 文件比较特殊,比较像 python 中的字典和列表。
3、json 文件使用比较频繁,按照 read 和write 的操作,比较麻烦,专门的方法 来操作 json 文件,可以直接得到 python 中的列表和字典。

  • 介绍

1、json 文件:是一种基于文本,,独立于语言的轻量级 数据交换格式。

  • 基于文本,文本文件,不包函图片,视频等。
  • 独立于语言,不是某一种 语言特有的,‘python,java,c++……
  • 轻量级,相同的数据量,json 文件的占用的文件大小相对较小。
  • 数据交换格式,后端服务器和前端页面 交换数据使用的格式。

2、在自动化测试中经常用来存放测试数据,文件后缀为 .json

  • json的语法

1、json 中的数据类型

  • 对象{}. -------> python 字典
  • 数组 [] ---------> python 列表
  • 字符串 ,必须使用双引号 -------> str
  • 数字类型 ------------> int, float
  • bool 类型(true false) ----------> True False
  • 空值 null ----------> None

2、json 文件,是一个对象 或者 数组,对象和数组可以相互嵌套。
3、json 中的对象,是由键值对组成的,键必须是 字符串类型
4、json 中的数据直接使用逗号隔开最后一个数据后边不能加逗号
5、json 文件的后缀是. json

  • json 文件的定义
    • info.json
{
  "name": "小明",
  "age": 18,
  "isMan": true,
  "school": null,
  "like": ["听歌", "吃饭", "打豆豆"],
  "address": {
    "country": "China",
    "city": "广州"
  }
}
  • 读取json文件

1、可以直接使用read 去读,但是取到的数据很麻烦,字符串类型
2、使用专门的方法去读:

  • 导包 import json
  • json.load(文件对象) -------> 得到的是 列表 或者 字典
# with open('info.json', encoding='utf-8') as f:
#     buf = f.read()
#     print(type(buf))   # <class 'str'>
#     print(buf)

import json
with open('info.json', encoding='utf-8') as f:
    buf = json.load(f)
    print(type(buf))   # <class 'dict'>
    print(buf)    # {'name': '小明', 'age': 18, 'isMan': True, 'school': None, 'like': ['听歌', '吃饭', '打豆豆'], 'address': {'country': 'China', 'city': '广州'}}
    # 取姓名
    print(buf.get('name'))  # 小明
    # 城市
    print(buf.get('address').get('city'))  # 小明
    # 喜好
    print(buf.get('like'))   # ['听歌', '吃饭', '打豆豆']
    # 第一个喜好
    print(buf.get('like')[0])   # 听歌
    
  • 案例
    info2.json
[
  {
    "name": "小明",
    "age": 18,
    "isMan": true,
    "like": ["听歌", "吃饭", "打豆豆"],
    "address": {
      "country": "China",
      "city": "广州"
    }
  },
  {
    "name": "小红",
    "age": 17,
    "isMan": false,
    "like": ["听歌", "学习", "购物"],
    "address": {
      "country": "China",
      "city": "北京"
    }
  }
]

代码.py

import json
with open('info2.json', encoding='utf-8') as f:
    data_list = json.load(f)  # 列表
    print(data_list)
    for data in data_list:
        """ 
        条件 为True 执行的代码 if 判断条件成立 else 条件为 False 执行的代码
        a = 'a' if 3 > 1 else 'b'
        """
        # sex = "男" if data.get('isMan') else "女"
        if data.get('isMen'):
            sex = "男"
        else:
            sex = "女"
        print(f"姓名: {data.get('name')},年龄:{data.get('age')} "
              f"性别: {sex},城市:{data.get('address').get('city')}")


    
  • json 文件写入

将python 中的列表或者字典 转换为 json 文件

  • 导包 import json
  • json.dump(python 中的对象,文件对象)
import json

info = {'name': '小明', 'age': 18}

with open('info3.json', 'w', encoding='utf-8') as f:
    # json.dump(info, f)
    # json.dump(info, f, ensure_ascii=False)  # 直接显示中文
    json.dump(info, f, ensure_ascii=False, indent=4)   # 缩进,格式化
  • 了解
    在这里插入图片描述

原文地址:https://blog.csdn.net/weixin_42421116/article/details/144332945

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!