Python 09 异常处理和Json存储数据

9.1 异常处理和存储数据


配套的 Python 教学视频

9.1.1 异常处理

格式如下:

try:
	print(a/b);
except:
	print("分母 不能为0")

try 是检测 代码段 是否出现异常

except 是代码出现异常后 要干什么

但是我们说 异常的错误情况和类型太多太多了。那咋办呢?python 就提供了一个 很便捷的 东西,叫 Exception 也就是所有异常的 类我们就可以通过 这种方式 捕获到各种 python 已定义的异常。

try:
	print(a/b);
except Exception as 出错信息:
	print("分母 不能为0")

as 是给 一个对象 起别名,比如 Exception as 出错信息,意思也就是我们 捕获到的异常,可以等价于 出错信息。这样我们就可以 把捕获到的异常输出了。

else 和 finally

else:没有异常的话,我们做什么。

finally:有没有异常 我都要去做!

try:
    file = open("1.txt","r")
except:
    file = open("1.txt","w")
    print("没有这个文件,我又新建了一个!")
else:
    print("没有异常")
finally:
    file.close()
    print("文件操作已关闭!")

在这里插入图片描述


9.1.2 with…as… 语句

with 可返回对象的表达式 as 把对象装到一个变量里:
	as 的变量 只在这个缩进里有用!它的作用域很小。
	执行的操作代码

9.1.3 自定义异常和面向对象

raise 异常类对象 意思是抛出一个异常

有些时候 一些报错,是你认为的错误,不一定是很严谨的,都通用的科学性问题。而是 你认为再程序方面 有些逻辑会出错。这个时候 你就要自己 设定一个 异常了。所以自定义异常是必须的!!!

例如:输入密码的长度 可能有要求限制,或者 必须得带有一个特殊字符。等等等。这些 其实都是程序的设计本身,自身自定义出来的 要求错误。而并非是 科学性错误。

class 密码(Exception): #自定义的 异常
    def __init__(self,长度,最小长度):
        self.长度 = 长度
        self.最小长度 = 最小长度

    def __str__(self):
        return f'你输入的长度是{self.长度},不能少于{self.最小长度}个字符'

def 自定义异常():
    try:
        用户输入=input("请输入密码:")
        if len(用户输入) < 8:
            raise 密码(len(用户输入),8)
    except Exception as 错误信息:
        print(错误信息)
    else:
        print("符合要求")
自定义异常()

一般 __方法名__ 代表的是 最开始的根类,python 或 你自己想要预留 不想要再次做更改的 方法。

比如说 __init__ 就是构造函数的 方法。

在这里插入图片描述


9.2.1 Json 存储数据

json 是 当下非常流行的 数据交换格式。它 以 键值对为主,非常易于 人们阅读和编写。

存数据的方法:dump() 用于编码json数据,写入到文件中dumps() 将python 提供的数据 尽量转换为 json 格式的数据。

取数据的方法:load() 用于解码json数据,取出文件中的内容loads() 将一个json 格式的数据 转换为 python 可以直接处理的数据。

所以我们要知道的是,一般情况下,dump() 和 dumps() 是要联用的。load() 和 loads() 也可以联用。

而这次 也是 只讲 这四个 方法。其它的我们 基本是用不上的。

import json



文件名 = '1.json'

try:
     with open(文件名, "r") as f:
          data = json.load(f)
          ret = json.loads(data)
          print(ret.keys())
          print(type(ret))

except Exception as e:
     用户名 = input('请输入你的名字:')
     data = {'name': 用户名, 'ye': 'sss'}
     with open(文件名, "w") as f:
          ret = json.dumps(data, indent=4, separators=(',', ':'))
          json.dump(ret, f)
          print(ret)
          print(f'{用户名}等你回来!')
else:
     print(data)
finally:
     f.close()

在这里插入图片描述

由于 过于简单,我们 就来说说 这样读写的 好处。

首先我们要知道,我们如果 想要 达到 极致的 读写,可以 类似于 数据库的程度。那么 就需要 知道 你要读取的数据 是在哪里的?也就是我们要找到 关键字,然后 确定位置。再一个就是 你要写的 数据 又要存在哪里? 这都是我们要 考虑的!

在早期,json 这个玩意,可以说 追随到 .ini 文件!这个文件 里面存储的都是 特殊格式的数据。在那时 各种 开发者,都有自己 比较 心仪的 格式。

随后我们要解决的问题就是:关键字 必须要好找,最后 一行只存一条数据。这样就真心 好找了。在关键字的 旁边,必须直接能找到 数据或对应的内容。这样才能方便直接读写。

慢慢的 JSON 格式的数据就诞生了,它 的 存储格式 是以 键值对为主的。键 是 关键字,值 是数据或内容。而且 每一条数据 都用 逗号隔开,键和值 之间用 : 隔开。整个 json 数据 用 {} 包含!代表着 json 格式的标识。

这样我们 就可以根据这个 特殊的 格式,来开发一些 方法来进行操作了。我们 import json 就是 python 的 一个 json 库。里面提供了 对 json 格式数据 简便 读写的方法。

比如你要 知道 该关键字对应的 值是什么,你就可以 把 json 解码出来,转变为 我们可以直接 操作的 字典类型数据,通过 键 找到 对应的值。

当 数据 被 读取为 字典类型后,我们也可以 通过键 直接对值进行更改,然后 再次 存到数据中去。

这种方式 慢吗? 其实并不慢,它是 被操作系统 辅助的,所以 其中会有些 优化的 成分在里,我们并不知道。你只要清楚这样的 操作 并不慢即可。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值