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)!