03文件操作以及pytest的安装
本文摘要: 文件操作基础:介绍了文件类型(文本/二进制)、操作步骤(打开、读写、关闭)及Python实现方法,包括open()函数参数、读写模式和编码方式。重点讲解了with语句自动关闭文件的推荐写法,以及按行读取大文件的技巧。 JSON处理:说明JSON作为轻量级数据交换格式的特点,详细解析其语法规则与Python数据类型的对应关系。演示了使用json模块读写JSON文件的方法,包括解决中文乱码
加油加油 记录下每天的小进步
文件操作
1, 文件: 可以存储在长期存储设备(硬盘, U盘) 上的一段数据即为文件
2, 计算机只认识 二进制(0 和 1), 计算机也只能存储二进制数据(在计算机存储的数据都是以二进制的形式 存储的)
3, 我们使用软件打开 看到的不是 0 和 1, 原因是 打开文件的软件会自动的将二进制数据进行转换
4, 根据能否使用 文本软件(记事本) 打开文件,将文件分为两类
- 文本文件(能使用记事本打开), 比如: .txt, .py, .md(markdown)
- 二进制文件(不能使用记事本打开的),比如: 音频(mp3) 视频(mp4, avi, rmvb …), 图片(jpg, png, gif ) 等
文件操作
步骤
1, 打开文件
2, 读/写文件
3, 关闭文件(保存)
- 打开文件
文件 是在 硬盘 中存储的, 打开文件,可以理解为 将硬盘中文件 加载到内存中
在 Python 中打开文件 使用的方法是 open() 函数
open(file, mode=‘r’, encoding=None) # 打开文件
- file: 要打开的文件, 类型 str, 可以使用相对路径, 也可以使用绝对路径
- 相对路径, 从当前代码所在的目录开始书写的路径(./ 当前目录 …/ 上一级目录)
- 绝对路径, 从盘符根目录(C: D: E:)开始书写的路径
- mode: 打开文件的方式
- ‘r’,read 只读打开, 文件只能读取,不能写入, 文件不存在, 会报错
- ‘w’,write 只写打开, 文件只能写入,不能读取, 文件不存在,会创建文件,文件存在,会覆盖原文件
- ‘a’,append 追加打开, 只能在文件的末尾写入内容,文件不存在,会创建文件
- encoding, 编码方式. 简单理解 二进制 和汉字之间如何进行转换的
- gbk, 将一个汉字 转换为 2 个字节的二进制
- utf-8(使用最多), 将一个汉字转换为 3 个字节的二进制
(byte 字节: 计算机中基本的存储单位, 1KB = 1024 Byte)
- 返回值: 返回一个 文件对象, 后续对文件的操作,都需要这个文件对象
变量 = open(文件名, 打开方式, encoding=‘utf-8’)
变量 就是 文件对象
- 读写文件
读文件
变量 = 文件对象.read() # 将文件中内容全部读取
返回值就是读取到的文件内容,类型是 字符串
with open(‘a.txt’, ‘r’, encoding=‘utf-8’) as f:
result = f.read()
print(result)
写文件
文件对象.write(‘写入的内容’) # 写入的内容需要是一个字符串
# 1. 打开文件
f = open(‘a.txt’, ‘w’, encoding=‘utf-8’)
# 2. 写文件
f.write(‘好好学习\n’)
f.write(‘天天向上’)
# 3. 关闭文件
f.close()
with open(‘a.txt’, ‘w’, encoding=‘utf-8’) as f:
f.write(‘good good study’)
追加文件
with open(‘a.txt’, ‘a’, encoding=‘utf-8’) as f:
f.write(‘\nday day up’)
3. 关闭文件
关闭文件的同时,会保存文件, 同时会清理内存中的资源
文件对象.close()
打开文件的推荐写法
with open(文件, 打开方式, encoding=‘utf-8’) as 变量: # 变量,就是文件对象
书写对文件的操作
好处,不用书写关闭文件的代码, 会自动关闭文件
关闭时机: with 缩进中的代码 执行完成,会关闭(出了 with 的缩进后会关闭)
按行读取文件
一次读取一行内容,文件指针(光标)会移动到这行的末尾
文件对象.readline()
read() 和 readline() 读到文件末尾,返回空字符串 “”
需求
模拟读取大文件:
文件内容有很多行,每次读取一行,读完位置
代码
with open(‘a.txt’, encoding=‘utf-8’) as f:
for i in f: # 文件对象 是可以直接遍历的, i 就是一行的内容
print(i, end=‘’)
with open(‘a.txt’, encoding=‘utf-8’) as f:
while True:
result = f.readline()
# 判断 result 的结果是否是空字符串, 如果是空字符串表示读到文件末尾,直接退出循环
if result == ‘’:
break
print(result, end='')
with open(‘a.txt’, encoding=‘utf-8’) as f:
while True:
result = f.readline()
# 判断 result 的结果是否是空字符串, 如果是空字符串表示读到文件末尾,直接退出循环
# 空字符串是 False, 非空字符串是 True
# if result == ‘’:
# if not result != ‘’: # result != ‘’ 表示读到内容, 没有读到文件末尾, 加上 not 就是取反
if not result: # result(1. 有内容为 True, 加上 not变为 False 2, 没有内容即空字符串, 是 False, 加上 not,变为 True)
break
print(result, end='')
Json 操作(重点)
1, json 文件 也是文本文件, 那么可以使用 read 和 write 函数 来操作,只是不方便而已
2, json 文件的格式比较特殊,像 Python 中字典和列表.
3, json 一种基于文本,独立于语言的轻量 级数据交换格式。
- 基于文本的, 文本文件,不包含图片,音视频
- 独立于语言, 是指不是某种语言特有的,是所有编程语言都可以使用的
- 轻量级, 定义相同的数据量, json 占用的文件比较小
- 数据交换格式, 前端和后端 的数据交互的格式
4, 在自动化测试中经常用来存放 测试数据,文件后缀名为: .json
json 语法
1, json 中的数据类型
对象 {} ---> Python 字典
数组 [] ---> Python 列表
字符串 "",必须使用双引号
数字类型 ---->python int, float
布尔类型 true, false ---> python True ,False
空 null ----> python None
2, json 文件中, 是一个对象{}或者数组[], 对象和数字可以相互嵌套
3, json 对象 是由键值对组成的, 键 必须是 字符串
4, json 中数据与数据之间使用逗号隔开, 最后一个数据后边不能写逗号
Json 文件读取
1, json 文件是一个文本文件,可以使用 read 读取, 得到的数据是 字符串类型,提取数据很麻烦
2. 所以 存在一个专门读取 json 文件的方法, 可以直接得到列表或者字典(根据 json 文件来决定的)
步骤:
- 导包 import json
- 读打开文件
- 使用 json.load(文件对象) 来读取 json 文件 --> 列表或者字典
json 的写入[了解]
是指将 Python 中的字典或者列表 直接写入 json 文件
步骤:
1, 导包 import json
2, 只写’w’打开文件
3, 使用 json.dump(Python 中的列表或者字典, 文件对象) 保存文件
import json
info={
"name": "张三",
"age": 25,
"gender": "男",
"hobby": ["看书", "旅游", "游泳"],
"is_student": False,
"address": {
"city": "北京",
"street": "朝阳区幸福大街100号",
"postal_code": "100000"
}
}
with open('info.json', 'w', encoding='utf-8') as f:
json.dump(info, f, ensure_ascii=False,indent=2,) # ensure_ascii=False 用来解决中文写入时的乱码问题
with open('info.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[1], line 2
1 with open('info.json', 'r', encoding='utf-8') as f:
----> 2 data = json.load(f)
3 print(data)
NameError: name 'json' is not defined
PYTHON的异常处理
异常的传递[理解]
异常传递: 在函数的嵌套调用过程中, 如果内部函数发生了异常,没有捕获,会将这个异常传递到外层函数(函数调用的地方), …
一直向外传递, 直到被捕获,或者最终报错
不需要我们自己代码实现, Python 底层已经实现的,我们只需要知道 异常会向外传递.
抛出异常
1, 抛出异常: 代码程序停止执行,并提示错误信息,就是抛出异常.
简单说: 程序代码之所以会停止执行,会报错, 是因为代码执行 遇到了抛出异常的代码
2, Python 中抛出异常 使用的关键字 是 raise,(简单理解,程序代码执行 遇到 raise , 代码就会停止,报错) (raise Exception(‘错误信息’))
3, 使用场景: 将来 我们自己书写代码模块,让别人使用, 为了规范使用者使用(参数是否满足要求等),只有满足我们的要求, 代码才能继续向下执行,如果不满足, 就抛出异常,终止代码的执行
写代码功能模块的人 抛出异常, 调用代码的人 捕获异常
更多推荐

所有评论(0)