Python第五次笔记
程序员文章站
2022-07-09 23:14:26
hashlib模块import hashlibmd=hashlib.md5()md.update("你好")md=md.hexdigest()print(md)出现以下错误:D:\PycharmProjects\untitled\venv\Scripts\python.exe D:\PycharmProjects\untitled\myself\test2.pyTraceback (most recent call last): File "D:\PycharmProjects\un...
hashlib模块
import hashlib
md=hashlib.md5()
md.update("你好")
md=md.hexdigest()
print(md)
出现以下错误:
D:\PycharmProjects\untitled\venv\Scripts\python.exe D:\PycharmProjects\untitled\myself\test2.py
Traceback (most recent call last):
File "D:\PycharmProjects\untitled\myself\test2.py", line 4, in <module>
md.update("你好")
TypeError: Unicode-objects must be encoded before hashing
由上图可知我们是没有对字符串进行编码,因为update()的括号里不支持将字符串对象引入,要将update括号里的字符串以一种编码格式(最好是utf-8)进行编码
import hashlib #导入hashlib模块
md=hashlib.md5() #将hashlib.md5的算法赋值给md
md.update("你好".encode('utf-8')) #先将你好这个字符串以utf-8编码转换成bytes(字节)格式,再存入到md变量中,因为update中只能存入bytes(字节)
md=md.hexdigest() #hexdigest(…) 以16进制形式返回加密内容
print(md)
#结果:7eca689f0d3389d9dea66ae112e5cfd7
实现数据序列化与反序列化
- 序列化:将数据对象转成字符串用于网络数据传输和数据存储
- 反序列化:将特定格式字符串转为数据对象的,用于在程序中运行
json模块
- json 目前最流行的一种数据格式,最初是JavaScript中的格式,后来被各大语言所支持。
- 目前是不同语言代码之间进行数据通信的首选格式。
import json #导入json模块
json 格式 字符串
"{key:value1,}"
#js python
#字符串"" 字符串
#数组【】 列表/元组
#对象 字典
#true/fales True/Fales
import json
dic={
'name':'shenjie',
'age':19,
'email':'2447736430@.com',
'tuple':(1,2,3,4,True,False)
}
print(dic)
#运行结果:
{'name': 'shenjie', 'age': 19, 'email': '2447736430@.com', 'tuple': (1, 2, 3, 4, True, False)}
json模块中常用的函数和类的功能如下
- json.dump(obj,fp)将obj对象转换成JSON字符串输出到fp流中,fp是一个支持write()方法的类文件对象。
- json.dumps(obj):将obj对象转换位JSON字符串,并返回该JSON字符串。
- json.load(fp):从fp流读取JSON字符串,将其恢复成JSON对象,其中fp是一个支持write()方法的类文件对象。
- json.loads(s):将JSON字符串s恢复成python对象。
dumps导出为json字符串
json.dumps()#对数据进行编码,把数据转换成json格式
# 写入 JSON 数据
with open('data.json', 'w') as f:
json.dump(data, f)
loads加载为python对象
json.loads()#对数据进行解码,从json格式转换成python数据.
# 读取数据
with open('data.json', 'r') as f:
data = json.load(f)
异常
python标准异常
- BaseException:所有异常的父类
- SystemExit:解释器请求退出
- KeyboardInterrupt:用户中断执行(通常ctrl+c)
- Exception:常规错误父类
- NameError: name ‘a’ is not defined
- TyepError: Can’t convet ‘int’ object to str implictly
- IndexError: list index out of range
- SyntaxError: unexpected EOF while parsing
- IndentationError: unexpected indent
- FileNotFoundError:[Errno 2] No sunch file or directory: ‘a.txt’
- ImportError: No module named ‘mathss’
- AttributeError:‘str’ object has no attribute’abc’
异常与处理
try:
#编写又可能错误的代码
a='100'
except Exception as e:
#当代码有异常时执行,无异常时不执行
#作用:1.错误时只提示,不中断
# 2.写入错误日志
# 3.补救措施,让之后的代码正常执行
print("有%s错误了!原因是:%s "%(Exception,e))
else:
#只当程序正常执行(可选)
print("一切正常!","a=",a)
finally:
#不论是否报错都会执行
for i in range(5):
print(i)
断言:在特定情况下触发执行某个错误
name = "shenjie"
assert name == "shenjie",NameError("用户名不正确!")
age = 19
class AgeError(Exception:)
"""docstring for ClassName """
pass
age = 17
if age < 18:
raise AgeError("您的年龄太小,不允许进入娱乐场所!")
本文地址:https://blog.csdn.net/qq_50864635/article/details/109904165
上一篇: 是时候有一个属于你的品牌LOGO了!
下一篇: 常见腾讯C++面试问题总结