猪行天下之Python基础——10.2 Python常用模块(下)(二)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 内容简述: 1、json模块 2、pickle模块 3、hashlib模块 4、base64模块

运行结果如下


序列化字典: b'\x80\x03}q\x00(X\x04\x00\x00\x00codeq\x01X\x03\x00\x00\x00200q\x02X\x04\x00\x00\x00dataq\x03]q\x04}q\x05(X\x0b\x00\x00\x00create_timeq\x06X\n\x00\x00\x002\xe5\xb0\x8f\xe6\x97\xb6\xe5\x89\x8dq\x07X\x02\x00\x00\x00idq\x08K\x03X\x05\x00\x00\x00titleq\tX3\x00\x00\x00\xe5\xaf\xb9\xe8\xaf\x9d\xe8\x91\xa3\xe6\x98\x8e\xe7\x8f\xa0\xef\xbc\x9a\xe8\xbf\x99\xe4\xb8\xaa\xe6\x97\xb6\xe4\xbb\xa3\xe8\xa6\x81\xe5\x80\xa1\xe5\xaf\xbc\xe5\x88\xa9\xe4\xbb\x96\xe6\x80\x9d\xe6\x83\xb3q\nX\x03\x00\x00\x00urlq\x0bX2\x00\x00\x00https://www.thepaper.cn/newsDetail_forward_3131849q\x0cuaX\x03\x00\x00\x00msgq\rX\x0c\x00\x00\x00\xe8\xaf\xb7\xe6\xb1\x82\xe6\x88\x90\xe5\x8a\x9fq\x0eu.'
反序列化字典: {'code': '200', 'data': [{'create_time': '2小时前', 'id': 3, 'title': '对话董明珠:这个时代要倡导利他思想', 'url': 'https://www.thepaper.cn/newsDetail_forward_3131849'}], 'msg': '请求成功'}
从文件中序列化: {'code': '200', 'data': [{'create_time': '2小时前', 'id': 3, 'title': '对话董明珠:这个时代要倡导利他思想', 'url': 'https://www.thepaper.cn/newsDetail_forward_3131849'}], 'msg': '请求成功'}


打开序列化后的文件:test.pkl,内容如下:



3、hashlib模块


Python中内置了一个字符加密模块hashlib,整合了md5和sha模块,支持下面这些加密算法:


__always_supported = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',
                      'blake2b', 'blake2s',
                      'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512',
                      'shake_128', 'shake_256')


可以通过下述属性查看hash对象的相关信息


  • name:查看当前hash对象的加密算法


  • digest_size:hash密文占多少个字节


  • block_size:hash数据库的大小


使用代码示例


import hashlib
origin_str = 'Hello Python!'
# md5加密
h_md5 = hashlib.md5()
h_md5.update(origin_str.encode('utf8'))
digest_str = h_md5.hexdigest()
print("md5加密: %s" % digest_str)
# 添加自定义key加密
h_md5_key = hashlib.md5('CoderPig'.encode('utf8'))
h_md5.update(origin_str.encode('utf8'))
digest_str = h_md5.hexdigest()
print("带key md5加密后: %s" % digest_str)
# sha1加密
h_sha1 = hashlib.sha1()
h_sha1.update(origin_str.encode('utf8'))
digest_str = h_sha1.hexdigest()
print("sha1加密后: %s" % digest_str)


运行结果如下


md5加密: c0a5ef1508044415ffd76c57ebd51b19
带key md5加密后: 27fd294cd16301d09a5e94840763c43b
sha1加密后: 2aac9ef117b5f1fd0be0380bf1e4e10dc62bfbf7


注意:SHA-1与MD5都是摘要算法,且为不可逆算法!!!另外,如果需要加密的字符串过长的话,可以使用同一个hash对象分多次加密,即多次update()。


4、base64模块


Python中提供的把二进制字节流编码为64个字符的模块,有一点要注意:


输入的base64编码字符串必须符合base64的padding规则:当原数据长度不是3的整数倍时:剩下2个输入数据,编码结果后加一个'=';剩下1个输入数据,编码结果加2个'='。以确保资料还原的正确性,否则会报:binascii.Error: Incorrect padding 的错误!!!


编解码的代码示例如下


import base64
test_str = "一段等待Base64编码的字符串"
if __name__ == '__main__':
    # 编码(转换为二进制才可以进行编码)
    encode_str = base64.b64encode(test_str.encode('utf-8'))
    print("编码后:", encode_str)
    # 解码(解码后为二进制,同样要转换下)
    decode_str = base64.b64decode(encode_str)
    print("解码后:", decode_str.decode('utf-8'))


运行结果如下


编码后: b'5LiA5q61562J5b6FQmFzZTY057yW56CB55qE5a2X56ym5Liy'
解码后: 一段等待Base64编码的字符串



相关文章
|
3月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
80 4
|
2月前
|
Python
Python Internet 模块
Python Internet 模块。
128 74
|
3月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
132 63
|
3月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
3月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
25天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
29 3
|
3月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
3月前
|
JSON Linux 数据格式
Python模块:从入门到精通,只需一篇文章!
Python中的模块是将相关代码组织在一起的单元,便于重用和维护。模块可以是Python文件或C/C++扩展,Python标准库中包含大量模块,如os、sys、time等,用于执行各种任务。定义模块只需创建.py文件并编写代码,导入模块使用import语句。此外,Python还支持自定义模块和包,以及虚拟环境来管理项目依赖。
Python模块:从入门到精通,只需一篇文章!
|
3月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
59 5
|
3月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
85 5

热门文章

最新文章