目录
按行读取文件readline()
读取大文件:
json文件:
json文件介绍:
json的语法:
读取json文件:
json文件写入:
异常:
捕获异常:
捕获指定类型的异常:
捕获未知类型的异常(使用最多):
异常捕获的完整结构:
异常传递:
编辑抛出异常:
按行读取文件readline():
文件对象.readline() #一次读取一行的内容,返回读取到的内容
read() 和readline() 如果读到文件末尾,返回的都是空字符串
读取大文件:
返回每一行数据
with open('a.txt', encoding='utf-8') as f:while True:buf = f.readline() # 文件读完了,返回空字符串if buf:print(buf, end='')else:break
json文件:
- json文件的本质也是文本文件,就可以直接使用read和write去进行操作;
- json文件比较特殊,比较像python中的字典和列表;
- json文件使用比较频繁,按照read和write的操作比较麻烦,专门的方法来操作json,可以直接得到python中的列表和字典.
json文件介绍:
- json文件是一种基于文本,独立于语言的轻量级数据交换格式.
--基于文本的文本文件,不包含图片,视频等
--独立于语言,不是某一种语言特有的,python,Java,C++...
--轻量级,相同的数据量,json文件占用的文件大小相对较小
--数据交换格式,后端服务器和前端页面交换数据使用的格式- 在自动化测试中经常用来存放测试数据,文件后缀名为.json
json的语法:
- json中的数据类型;
--对象{}----->Python字典
--数组[]----->Python列表
--字符串,必须使用双引号----->str
--数字类型----->int,float
--bool类型(true false)----->True False
--空值 null ----->None- json文件,是一个对象或者是数组,对象和数组可以相互嵌套;
- json中的对象,是由键值对组成的,键必须是字符串类型;
- json中的数据直接使用都好隔开,最后一个数据后边不能加逗号;
- json文件的后缀是.json
读取json文件:
- 可以直接使用read去读,但是想要取到数据很麻烦;
- 使用专门的方法去读:
--1.导包 import json
--2.json.load(文件对象)----->得到的是列表或者字典
import jsonwith open("info.json", encoding="utf-8") as f:buf = json.load(f)print(buf)print(buf.get("name"))print(buf.get('adress').get('city'))
json文件写入:
将python中列表或者字典转换为json文件
导包
使用json.dump(python中数据,文件对象)
import jsoninfo = {'name': '小明', 'age': 18}with open('info3.josn', 'w', encoding='utf-8') as f:json.dump(info, f, ensure_ascii=False, indent=4) # ensure_ascii=False直接显示中文,indent=4代表4个缩进
异常:
- 程序在运行时,如果python解释器遇到一个错误,则会停止程序的执行,并且提示一些错误信息,这就是异常;
- 程序停止执行并且提示错误信息这个动作,通常称之为:抛出(raise)异常.
捕获异常:
- 程序代码在执行的时候,如果遇到异常,程序就会终止,不会继续执行;
- 需求:程序遇到异常之后,不会结束,可以继续执行;
- 实现需求:就需要使用异常捕获.
try:
可能发生异常的代码
except: #可以捕获任意类型的异常
发生了异常后执行的代码
# 1.获取用户从键盘输入的数据
num = input('请输入数字:')
try:# 2.转换数据类型为整数num = int(num)# 3.数据转换类型正确时,输出数据内容print(num)
except:# 4.数据转换类型错误时,提示输入正确数据print('请输入正确的数字')
捕获指定类型的异常:
发生的异常可能存在多种,针对不同类型的异常,解决处理的方案不一样
try:
可能发⽣异常的代码
except 异常类型1:
发生异常类型1,执⾏的代码
except 异常类型2:
发生异常类型2,执⾏的代码
except .....:
pass
try:num = int(input('请输入一个整数数字:'))num1 = 8 / numprint(num1)
except ValueError:print('输入的内容非整数,请重新输入')
except ZeroDivisionError:print('不能输出数字0,请重新输入')
捕获未知类型的异常(使用最多):
try:
可能发生异常的代码
except Exception as 变量: #Exception常见异常类的父类,变量 异常对象,print()可以打印异常信息
发生异常执行的代码
try:num = int(input('请输入一个整数数字:'))num1 = 8 / numprint(num1)
except Exception as e:# print('输入的内容非整数,请重新输入')print(f'发生了异常,{e}')
异常捕获的完整结构:
try:
可能发生异常的代码
except 异常类型:
发生了指定类型的异常执行的代码except Exception as e:
发生了其他类型的异常执行的代码
else:
没有发生异常,会执行的代码
finally:
不管有没有发生异常,都会执行的代码
# 1.获取用户输入的数字
num = input('请输入数字:')
# 2.判断获取的数字是否是整数
if num.isdigit():# 如果是True,表示是整数# 类型转换num = int(num)# 4.如果是整数,则进一步判断是奇数还是偶数if num % 2 == 0:print('偶数')else:print('奇数')
else:print('输入错误,请输入整数')# 5.最终提示:程序运行借宿
print('程序运行结束')
异常传递:
- 异常传递是python中已经实现好的功能,不需要我们写代码实现;
- 异常传递是指,在函数的嵌套调用中,如果发生了异常,没有进行捕获,会将这个异常传递到函数调用的地方,直到被捕获为止,如果一直没有捕获,才会报错,终止执行,
抛出异常:
- 在执行代码的过程中,之所以会发生异常,终止代码执行,是因为代码执行遇到了raise关键字;
- raise关键字的作用,就是来抛出异常,让代码终止执行;
- 应用场景:自己书写代码模块,让别人使用,为了让别人按照你的规定使用你的代码,你就可以在他不满足你条件的情况下,使用raise抛出异常.
def input_password():pwd = input('请输入密码:')if len(pwd) < 8:# raise异常对象raise Exception('密码长度不足8位')else:return pwdtry:wd = input_password()print(f'获取的密码是:{wd}')
except Exception as e:print(e)