Python常用模块
1.json模块和pickle模块
二者均用于序列化和反序列化,即将数据存入硬盘(文件)中
import json
#json最常用的是:json.dumps(存入)和json.loads(取出)
struct_data = {'name': 'json', 'age': 23, 'sex': 'female'}
print(struct_data, type(struct_data)) #{'name': 'json', 'age': 23, 'sex': 'female'} <class 'dict'>
data = json.dumps(struct_data)
print(data, type(data)) #{"name": "json", "age": 23, "sex": "female"} <class 'str'>
#无论数据是以什么样的方式创建的,只要满足json格式(字典中的所有引号都必须是双引号),都可以用json.load取出数据
data = json.loads(data)
print(data, type(data)) # {'name': 'json', 'age': 23, 'sex': 'male'} <class 'dict'>
#json序列号和反序列化
with open('xxxxjson序列化对象.json','w') as fw:
fw.dumps(struct_data,fw) #结果是会把struct_data存入xxxxjson序列化对象.json文件中
with open('xxxxjson反序列化对象.json','r') as fr:
fr.loads(struct_data,fr) #结果是会把struct_data从xxxxjson序列化对象.json文件中取出来
#json的序列化和反序列化可以每个json文件存储一个字典信息,这也是python中json的规范,不要用json存多个字典
#pickle模块和json的区别在于:(1)它支持存储所有python中的数据类型,包括函数等乱七八糟的东西;而json只支持list,dict,str,int或float,True/False,None(2)json兼容java等各种语言,pickle只用于python且不同的python版本也可能存在不兼容;(3)pickle是以二进制形式进行存储,因此在读取文件、存储时需要用'rb/wb'
import pickle
def f1():
a=10
b=5
res=a+b
return res
with open('test.pickle','wb') as fw:
pickle.dump(f1,fw)
with open('test.pickle','rb') as fr:
data=pickle.load(fr)
print(data()) #15
2.os模块
os用于文件操作,和操作系统交互
代码中写路径时都要加上一个r,表示原生的
区分一个事情:程序运行时找导入的模块时,导入模块的路径寻找是基于当前运行文件路径来找的,也就是说,自创的模块的路径一定要和运行程序在同一个目录下;而在区分绝对路径和相对路径时,和运行完全没有关系,相对路径相对的就是本文件(也就是写有相对路径的文件)
3.sys模块
(1)sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境;
(2)sys模块帮助python实现print()函数:sys.stdout()
4.hashlib模块
#整个hash流程如下:
#hash的特点:
#(1)同一个hash编码表,不管数据多长,生成的hash编码都是一样长
#(2)hash加密的数据一样,则hash结果一样
#(3)如果使用同一个哈希字符编码表,不断的hash,结果会累加
import hashlib
#生成一个哈希编码表
m=hashlib.md5()
#hash之前必须对数据进行编码(编码为二进制数据)
data1='13du'.encode() #6a4212b1d8a7d9f58cd844820ca25b17
data2='gudhsihoj1ojij'.encode() #9eeaceac34ce9ee4791ba6f72a72b3ca
#hash过程
m.update(data1)
print(m.hexdigest())
#hash特征(3):结果累加
m.updata(data2)
print(m.hexdigest()) #dca1c5b7ce78700697b0763904f612d8,得到的这个编码是'13dugudhsihoj1ojij'的编码结果
hmac模块是hashlib模块的安全模式,hashlib模块不算很安全
5.logging模块
写日志的模块:了解了四项基本之后,一般是copy现有的日志文档,能看明白,能做细微改动即可;
记住一点,日志中字典的键一定不要去改,是定死的,只能去改值
6.numpy模块
(1)是python中的数值计算拓展库,存储和处理大型numpy数组;
(2)numpy库的作用:一、区别于list,比list更方便做数组的运算,比如数组的点乘等;二、计算速度快,甚至由于python内置的简单运算,使得其成为pandas、sklearn等模块的依赖包。高级的框架如TensorFlow、PyTorch等,其数组操作也和numpy非常相似;
numpy模块理解起来不难,只需要掌握它封装的数组运算函数即可,数据运算函数可以参照网络上的其他文章