python|Python文件操作及 json

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)
3.2 json文件的语法 1、json 文件的后缀是 .json
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"))

python|Python文件操作及 json
文章图片

练习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|Python文件操作及 json
文章图片

简单的介绍了下python中文本文件的操作和json文本,json的文本格式重要,要掌握,这篇帖子是为后面自动化测试做铺垫的。

    推荐阅读