json文件操作和异常处理

目录

按行读取文件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文件:

  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(文件对象)----->得到的是列表或者字典
import json

with 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 json

info = {'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个缩进

异常: 

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

捕获异常: 

  1. 程序代码在执行的时候,如果遇到异常,程序就会终止,不会继续执行;
  2. 需求:程序遇到异常之后,不会结束,可以继续执行;
  3. 实现需求:就需要使用异常捕获.
    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 / num
    print(num1)
except ValueError:
    print('输入的内容非整数,请重新输入')
except ZeroDivisionError:
    print('不能输出数字0,请重新输入')

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

 try:

        可能发生异常的代码

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

        发生异常执行的代码

try:
    num = int(input('请输入一个整数数字:'))
    num1 = 8 / num
    print(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('程序运行结束')

异常传递:

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

抛出异常: 

  1.  在执行代码的过程中,之所以会发生异常,终止代码执行,是因为代码执行遇到了raise关键字;
  2. raise关键字的作用,就是来抛出异常,让代码终止执行;
  3. 应用场景:自己书写代码模块,让别人使用,为了让别人按照你的规定使用你的代码,你就可以在他不满足你条件的情况下,使用raise抛出异常.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/668848.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法人生(18):从神经网络的“剪枝策略”看“怎么找回时间”

IT人的工作和生活难平衡这事,到底要怎么解决呢,让我们从神经网络的“剪枝策略”中找点灵感吧! 剪枝策略是指训练和优化深度神经网络时采取的一种技术,从名字就知道,它就像修剪树木一样,去除不必要的枝叶&a…

云原生架构模式

本文主要介绍了云原生架构的主要设计模式,讨论了这些模式的优缺点及其适用场景,并探讨了在云计算环境中的应用和挑战。原文: Cloud-Native Architecture Patterns (Part 1),Cloud-Native Architecture Patterns (Part 2) Bernard Hermant Uns…

微软如何打造数字零售力航母系列科普12 - 使用Microsoft Fabric将客户数据带入人工智能时代

【世界上充斥着数据,在过去的2年里,我们都看到了人工智能如何有潜力彻底改变我们的日常业务。人们对利用生成性人工智能体验的力量的需求越来越大,但这样做需要一个干净的数据庄园,而且可能会因为各种技术堆栈、分散的团队和无处不…

常见仪表盘指示灯的含义,这次够全了!

汽车是当前主要的交通工具之一,给人们的工作、生活提供了便利。大家在学会开车的同时,也得了解一些基本的汽车常识,可以及时的发现车辆的问题,并作出正确的判断,以此降低车辆的损耗和维修成本。其中最基本的&#xff0…

Redis-重定向

实验环境(3主3从的Redis-Cluster) 一、Redis重定向基础篇 1、MOVED重定向 Redis Custer 中,客户端可以向集群中任意节点发送请求。此时当前节点先对 Key 进行 CRC 16 计算,然后按 16384 取模确定 Slot 槽。确定该 Slot 槽所对应的…

C语言(字符、字符串函数)2

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记,在这里撰写成文一…

基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示与TM1638芯片连接的按键的按键值应用

基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示与TM1638芯片连接的按键的按键值应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍TM1638键盘…

⌈ 传知代码 ⌋ 命名实体识别

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

windows操作系统提权之服务提权实战rottenpotato

RottenPotato: 将服务帐户本地提权至SYSTEM load incognito list_tokens –u upload /home/kali/Desktop rottenpotato.exe . execute -Hc -f rottenpotato.exe impersonate_token "NT AUTHORITY\SYSTEM" load incognito 这条命令用于加载 Metasploi…

Pytorch线性回归

使用pytorch来重现线性模型的过程,构造神经网络module,构造损失函数loss,构造随机梯度下降的优化器sgd。 一 revise 首先确定我们的模型,我们希望完成的目标就是得到较小的loss,所以我们就需要一个标量值的loss。 那…

Linux入门攻坚——24、BIND编译安装、Telnet和OpenSSH

BIND编译安装 对于没有rpm包,需要源代码编译安装。 1、下载源代码:bind-9.12.2-P1.tar.gz,解压:tar -xf bind-9.12.2-P1.tar.gz 2、完善环境: 1)增加用户组named:groupadd -g 53 named 2&…

Multipass虚拟机磁盘扩容

Multipass 是一个用于轻松创建和管理 Ubuntu 虚拟机的工具,特别适合开发环境。要使用 Multipass 扩大虚拟机的磁盘容量,你需要经历几个步骤,因为 Multipass 自身并不直接提供图形界面来调整磁盘大小。不过,你可以通过结合 Multipa…

程序员上岸指南

如果你还在996,大小周,感觉身体被掏空,那么你可以看看下面这篇文章,我特意搜集了一些苦逼程序员的上岸教程。 人生真的就是做几道选择题,选错了,忙也是瞎忙。选对了,躺着都能赢。总的来说&#…

MQTT之使用mosquitto

1、下载并安装mosquitto 参考:04 Windows下mosquitto安装_mosquitto-1.6.9-install-windows-x64 windowsserver系-CSDN博客 2、启动 2.1添加用户 .\mosquitto_passwd -c pwfile.example user1 报错信息如下: Error: Unable to open file C:\Program…

Go-Admin后台管理系统源码(GO+VUE)编译与部署

1.克隆源码: # Get backend code git clone https://github.com/go-admin-team/go-admin.git# Get the front-end code git clone https://github.com/go-admin-team/go-admin-ui.git3.下载并安装GO开发环境: 3.编译管理后台后端 # Enter the go-admin backend project cd ./…

深入解析智慧互联网医院系统源码:医院小程序开发的架构到实现

本篇文章,小编将深入解析智慧互联网医院系统的源码,重点探讨医院小程序开发的架构和实现,旨在为相关开发人员提供指导和参考。 一、架构设计 智慧互联网医院系统的架构设计是整个开发过程的核心,直接影响到系统的性能、扩展性和维…

IO流(1)

定义:存取和读取数据的解决方案 作用:用于读写数据(本地文件、网络) 分类: 一种是:输出流和输入流。 一种是:字节流和字符流。 字节流 字节流——FileOutputStream(字节输出流&…

MoeCTF 2022 usb

直接找 URB的第一个输入协议 我们需要提取的数据 HID Data 提取过滤器 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json >1.json 拿 usbhid.data 字段 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json -e usbhid.data …

【记录】打印|用浏览器生成证件照打印PDF,打印在任意尺寸的纸上(简单无损!)

以前我打印证件照的时候,我总是在网上找在线证件照转换或者别的什么。但是我今天突然就琢磨了一下,用 PDF 打印应该也可以直接打印出来,然后就琢磨出来了,这么一条路大家可以参考一下。我觉得比在线转换成一张 a4 纸要方便的多&am…

Git常用命令1

1、设置用户签名 ①基本语法: git config --global user.name 用户名 git config --global user.email 邮箱 ②实际操作 ③查询是否设置成功 cat ~/.gitconfig 注:签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交…