Python文件操作及 json
文章目录
- Python文件操作及 json
-
- 一、文件的介绍
- 二、文件操作
-
- 1、打开文件
- 2、读或者写文件
- 3、关闭文件
- 4、使用 with open 打开文件
- 5、按行读取文件内容
- 三、json文件的处理
-
-
- 3.1 json的介绍
- 3.2 json文件的语法
- 3.3json文件的书写
- 3.4 读取json文件
-
一、文件的介绍 计算机的?件,就是存储在某种?期储存设备上的?段数据作?:将数据?期保存下来,在需要的时候使?
- 计算机只认识 二进制(0,1)
- 文件中存储的数据都是以二进制(0,1)
可以根据?件中的?进制内容,能否使?记事本软件将其转换为?字,将?件分为两种:?本?件和?进制文件
- 【python|Python文件操作及 json】文本文件
- 能够使?记事本软件打开(能够使?记事本转换为?字)
- txt, md, py, html, css, js, json
- 二进制文件
- 不能使用记事本软件打开的
- exe, mp3, mp4, jpg, png
我们操作的基本都是文本文件二、文件操作 文件操作的步骤:
1、打开文件
2、度或者写文件
3、关闭文件
1、打开文件
打开?件:将?件从磁盘(硬盘)中读取到内存中
# 语法:
open(file, mode='r', encoding=None)
> 参数file: 是要打开的?件,类型是字符串,文件的路径可以是相对路径,也可以是绝对路径(带盘符的路径,也就是说根目录),建议使用相对路径(相对于当前代码?件所在的路径, ./ ../)
> 参数mode:默认参数(缺省参数),表示打开文件的方式
> r: read 只读打开
> w: write 只写打开
> a:append 追加打开, 在文件的末尾写入内容
> 参数 encoding :编码方式,(?字和?进制如何进?转换的)
> gbk: 将?个汉字转换为 2 个字节二进制
> utf-8: 常用,将?个汉字转换为 3 个字节的二进制
> 返回值:饭后的是文件对象,后续对文件的操作,都需要这个对象
2、读或者写文件
写文件
向?件中写?指定的内容.
前提:?件的打开?式是w或者a
文件对象.write( '写入文件的内容')
# 返回值:写入文件的字符数,一般不关注# 注意w方式打开文件:
1.文件不存在,会直接创建文件
2.文件存在,会覆盖原文件(将原文件中的内容清空)
# 打开文件
f = open('a.txt','w',encoding='utf-8')
# 写文件
f.write('不要焦虑\n')
f.write('平复心情')
# 关闭文件
f.close()
读文件
将?件中的内容读取出来
前提:?件的打开?式需要是 r文件对象.read(n)
# 参数 n 表示读取多少个字符,一般不写,表示读取全部内容
# 返回值:读取到的文件内容,类型 字符串
# 打开文件
f = open('a.txt','r',encoding='utf-8')
# 读文件
buf = f.read()
print(buf)
# 关闭文件
f.close()
3、关闭文件
关闭?件:将?件占?的资源进?清理,同时会保存?件,?件关闭之后,这个?件对象就不能使?了
文件对象.close()
4、使用 with open 打开文件
好处就是,最后自行关闭文件,不用手动写 文件对象.close!!
with open('a.txt', encoding='utf-8') as 变量: # mode 默认是 'r'
# 在缩进中去读取或者写??件# 在缩进中去读取或者写??件,出缩进之后,文件会自动关闭
with open('a.txt','a',encoding='utf-8') as f:
f.write('good good study')# a方式打开文件,文件不存在会创建文件,文件存在,在文件的末尾写入内容
5、按行读取文件内容
按?读取?件:?次读取??内容
文件对象.read()
# with open('b.txt',encoding='utf-8') as f:
#buf = f.readline()
#print(buf)
#print(f.readline())# with open('b.txt',encoding='utf-8') as f:
#for i in f:
#print(i,end='')# read()和readline()读到文件末尾,返回一个空字符串,即长度为0with open('b.txt',encoding='utf-8') as f:
while True:
buf = f.readline()
if len(buf) == 0:
break
else:
print(buf, end= '')
三、json文件的处理 json?件也是?个?本?件,就可以直接使?read()和write()?法去操作?件,只是使?这两个?法,不?便,所以对json?件有??独特的读取和写?的?法
常?在做测试的时候,将测试数据定义为json?件格式,使?代码读取json?件,即读取测试数据,进?传参(参数化)
3.1 json的介绍 json基于?本,独?于语?的轻量级的数据交换格式
- 基于文本,是一个文本文件,不能包含图?,?视频等
- 独立于语言,不是某个语言特有的,每种编程语?都可以使?的
- 轻量级,相同的数据,和其他格式相比,占用的格式比较小
- 数据交换格式,后端程序员,给前端的数据(html,json,xml)
2、json 中的主要数据类型为 对象({} 类似于Python 的字典)和 数组([ ],类似python 中的列表),对象和数组可以互相嵌套
3、?个json?件是?个对象或者数组(即json?件的最外层要么是?个{},要么是?个数组[])
4、json 中的对象是由
键值对
组成的,每个数据之间使? 逗号隔开,但是最后?个数据后边不要写逗号5、json 中的字符串必须是双引号
6、json中的其他数字类型
数字类型---->intfloat
字符串string—>str
布尔类型true,false----->True,False(python中是大写首字母)
空类型 null ----->None
3.3json文件的书写 我叫?明,我今年18岁,性别男,爱好听歌,游戏,购物,吃饭,睡觉,打豆豆。我的居住地址为国家中国,城市上海
{
"name": "小明",
"age": 18,
"isMen": true,
"like": [
"听歌",
"游戏",
"购物",
"打豆豆"
],
"address": {
"country": "中国",
"city": "上海"
}
}
3.4 读取json文件 1、导包 import json
2、读打开文件
3、读文件
json.load(文件对象)
返回的是 字典 (文件中的对象)或者列表 (文件中的数组)
# 1.导包
import json# 2、读打开文件
with open('Dome.json', encoding='utf-8') as f:
# 3、读取文件
result = json.load(f)
print(type(result))#
print(result.get('name'))
print(result.get('age'))
print(result.get('address').get('city'))
练习:
我叫?明,我今年18岁,性别男,爱好听歌,游戏,吃饭,睡觉,打??,我的居住地址为国家中国,城市上海.我叫?红,我今年17岁,性别?,爱好听歌,学习,购物我的居住地址为国家中国,城市北京.
json文件:
[
{
"name": "小明",
"age": 18,
"isMan": true,
"like": [
"听歌",
"游戏",
"购物",
"打豆豆"
],
"address": {
"country": "中国",
"city": "上海"
}
},{
"name": "小红",
"age": 18,
"isMan": false,
"like": [
"听歌",
"学习",
"购物"
],
"address": {
"country": "中国",
"city": "北京"
}
}
]
代码文件:
# 1、导包
import json
# 2、读打开文件
with open("infor2.json",encoding='utf-8') as f:
# 3、读取文件
infor_result = json.load(f)
for infor in infor_result:
print(infor.get('name'),infor.get("age"),infor.get("address").get("city"))
文章图片
练习2:
某?站的测试数据如下data.json,需求,提取json?件中的?户名,密码和预期结果,组成如下格式:(),(),()
[
{
"desc": "正确的用户名密码",
"username": "admin",
"password": "123456",
"expect": "登录成功"
},
{
"desc": "错误的用户名",
"username": "root",
"password": "123456",
"expect": "登录失败"
},
{
"desc": "错误的密码",
"username": "admin",
"password": "123123",
"expect": "登录失败"
}
]
def read_data():
new_list = []
with open("infor3.json",encoding='utf-8') as f:
data = json.load(f)
for i in data:
new_list.append(i.get('username'),i.get('password'),i.get('expect'))# print(new_list)
return new_list
文章图片
简单的介绍了下python中文本文件的操作和json文本,json的文本格式重要,要掌握,这篇帖子是为后面自动化测试做铺垫的。
推荐阅读
- 测试用例|自动化测试——unittest框架
- 单元测试|自动化测试——selenium(环境部署和元素定位篇)
- python|ViT结构
- python学习|利用python爬虫技术获取每天每场的每位球员NBA数据以及每日范特西评分
- python爬虫实操|python爬虫实操|爬取nba中国官网球员数据
- 超级实习生|2022年校招互联网大厂薪酬状况如何(“白菜”总包接近40W是真是假?)
- 超级实习生|简历空白怎么办(计算机专业应届生和在校生怎么写简历?)
- 二叉树(Binary|LeetCode 337. House Robber III - 二叉树系列题25
- Python中转换数据类型的函数