当前位置:   article > 正文

json文件操作和异常处理

json文件操作和异常处理

目录

按行读取文件readline()

读取大文件:

 json文件:

json文件介绍:

json的语法: 

 读取json文件:

 json文件写入:

异常: 

捕获异常: 

捕获指定类型的异常:

捕获未知类型的异常(使用最多):

 异常捕获的完整结构:

异常传递:

​编辑抛出异常: 


按行读取文件readline():

文件对象.readline()   #一次读取一行的内容,返回读取到的内容

read() 和readline()  如果读到文件末尾,返回的都是空字符串

读取大文件:

返回每一行数据

  1. with open('a.txt', encoding='utf-8') as f:
  2. while True:
  3. buf = f.readline() # 文件读完了,返回空字符串
  4. if buf:
  5. print(buf, end='')
  6. else:
  7. break

 json文件:

  1. json文件的本质也是文本文件,就可以直接使用read和write去进行操作;
  2. json文件比较特殊,比较像python中的字典和列表;
  3. json文件使用比较频繁,按照read和write的操作比较麻烦,专门的方法来操作json,可以直接得到python中的列表和字典.

json文件介绍:

  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文件:

  1. 可以直接使用read去读,但是想要取到数据很麻烦;
  2. 使用专门的方法去读:
    --1.导包 import json
    --2.json.load(文件对象)----->得到的是列表或者字典
  1. import json
  2. with open("info.json", encoding="utf-8") as f:
  3. buf = json.load(f)
  4. print(buf)
  5. print(buf.get("name"))
  6. print(buf.get('adress').get('city'))

 json文件写入:

将python中列表或者字典转换为json文件

导包

使用json.dump(python中数据,文件对象)

  1. import json
  2. info = {'name': '小明', 'age': 18}
  3. with open('info3.josn', 'w', encoding='utf-8') as f:
  4. json.dump(info, f, ensure_ascii=False, indent=4) # ensure_ascii=False直接显示中文,indent=4代表4个缩进

异常: 

  1. 程序在运行时,如果python解释器遇到一个错误,则会停止程序的执行,并且提示一些错误信息,这就是异常;
  2. 程序停止执行并且提示错误信息这个动作,通常称之为:抛出(raise)异常.

捕获异常: 

  1. 程序代码在执行的时候,如果遇到异常,程序就会终止,不会继续执行;
  2. 需求:程序遇到异常之后,不会结束,可以继续执行;
  3. 实现需求:就需要使用异常捕获.
    try:
        可能发生异常的代码
    except:  #可以捕获任意类型的异常
         发生了异常后执行的代码
  1. # 1.获取用户从键盘输入的数据
  2. num = input('请输入数字:')
  3. try:
  4. # 2.转换数据类型为整数
  5. num = int(num)
  6. # 3.数据转换类型正确时,输出数据内容
  7. print(num)
  8. except:
  9. # 4.数据转换类型错误时,提示输入正确数据
  10. print('请输入正确的数字')

捕获指定类型的异常:

        发生的异常可能存在多种,针对不同类型的异常,解决处理的方案不一样

try:

        可能发⽣异常的代码

except 异常类型1:

        发生异常类型1,执⾏的代码

except 异常类型2:

        发生异常类型2,执⾏的代码

except .....:

        pass

  1. try:
  2. num = int(input('请输入一个整数数字:'))
  3. num1 = 8 / num
  4. print(num1)
  5. except ValueError:
  6. print('输入的内容非整数,请重新输入')
  7. except ZeroDivisionError:
  8. print('不能输出数字0,请重新输入')

捕获未知类型的异常(使用最多):

 try:

        可能发生异常的代码

except Exception as 变量:        #Exception常见异常类的父类,变量 异常对象,print()可以打印异常信息

        发生异常执行的代码

  1. try:
  2. num = int(input('请输入一个整数数字:'))
  3. num1 = 8 / num
  4. print(num1)
  5. except Exception as e:
  6. # print('输入的内容非整数,请重新输入')
  7. print(f'发生了异常,{e}')

 异常捕获的完整结构:

try:

        可能发生异常的代码

except 异常类型:
        发生了指定类型的异常执行的代码

except Exception as e:

        发生了其他类型的异常执行的代码

else:

        没有发生异常,会执行的代码

finally:

        不管有没有发生异常,都会执行的代码

  1. # 1.获取用户输入的数字
  2. num = input('请输入数字:')
  3. # 2.判断获取的数字是否是整数
  4. if num.isdigit():
  5. # 如果是True,表示是整数
  6. # 类型转换
  7. num = int(num)
  8. # 4.如果是整数,则进一步判断是奇数还是偶数
  9. if num % 2 == 0:
  10. print('偶数')
  11. else:
  12. print('奇数')
  13. else:
  14. print('输入错误,请输入整数')
  15. # 5.最终提示:程序运行借宿
  16. print('程序运行结束')

异常传递:

  1. 异常传递是python中已经实现好的功能,不需要我们写代码实现;
  2. 异常传递是指,在函数的嵌套调用中,如果发生了异常,没有进行捕获,会将这个异常传递到函数调用的地方,直到被捕获为止,如果一直没有捕获,才会报错,终止执行,

抛出异常: 

  1.  在执行代码的过程中,之所以会发生异常,终止代码执行,是因为代码执行遇到了raise关键字;
  2. raise关键字的作用,就是来抛出异常,让代码终止执行;
  3. 应用场景:自己书写代码模块,让别人使用,为了让别人按照你的规定使用你的代码,你就可以在他不满足你条件的情况下,使用raise抛出异常.
  1. def input_password():
  2. pwd = input('请输入密码:')
  3. if len(pwd) < 8:
  4. # raise异常对象
  5. raise Exception('密码长度不足8位')
  6. else:
  7. return pwd
  8. try:
  9. wd = input_password()
  10. print(f'获取的密码是:{wd}')
  11. except Exception as e:
  12. print(e)

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号