sys 模块
sys模块是与python解释器交互的一个接口
处理命令行参数
在解释器启动后,argv列表包含了传递脚本的所有参数,列表的第一个元素是脚本自身的名称。
import sys
print(sys.argv[0])
print(sys.byteorder) # 显示python解释器有关的版本信息
print(sys.copyright) # 显示python解释器在磁盘上的存储路径
print(sys.getfilesystemencoding()) # 显示python显示器所在的平台
print(sys.maxsize) # 显示python整数支持的最大值print
print(sys.platform) # 显示当前python解释器的版本信息
print(sys.version) # 返回当前python解释器的主版本号
#输出
['D:/STUDY/周日python学习/PycharmProjects/untitled/test1.py']
...
序列化模块
-
序列化
- 概念:将一个对象从内存中转换为可存储(字符串类型)或者可传输(bytes)类型的过程
- Python中叫pickling。
-
意义:
- 持久化数据类型
- 跨平台交互使用
- 使程序更易维护
json
json格式在各个语音中都可以通用的序列化格式。在json中,所有的字符串必须为双引号(")。
json类型 | python类型 |
---|---|
{} | dict |
[] | list |
“string” | str |
1234.56 | int/float |
true/false | True/False |
null | None |
-
json的优缺点
- 优点:所有的数据类型是各语言通用的
- 缺点:
- json只支持比较少的数据类型
- 对数据类型的约束十分严格
- 字典中key必须是字符串
- json只支持列表,字典,数值,字符串,以及布尔值
-
四个功能
- dumps
import json dic = {'name': 'riku', 'age': 20, 'type': 'A', 6: 6} sr_dic = json.dumps(dic) #序列化过程,将字典转化为一个字符串 print(sr_dic) print(type(sr_dic)) #输出 {"name": "riku", "age": 20, "type": "A", "6": 6} <class 'str'> #如果是元组,序列化是强转为列表,若元组作为字典的键,序列化时报错。
如果把数据类型直接序列化写入文件中,可以用dump和load的方法
- loads
import json dic = {'name': 'riku', 'age': 20, 'type': 'A', 6: 6} sr_dic = json.dumps(dic) print(sr_dic) print(type(sr_dic)) dic_2 = json.loads(sr_dic) #反序列化过程,但数字还是字符串 print(dic_2) print(type(dic_2)) #输出 {"name": "riku", "age": 20, "type": "A", "6": 6} <class 'str'> {'name': 'riku', 'age': 20, 'type': 'A', '6': 6} <class 'dict'>
-
load
-
dump
import json dic = {'name': 'riku', 'age': 20, 'type': 'A', 6: 6} with open('test.txt', 'w') as f: json.dump(dic, f) # dump方法可以接受一个文件句柄,直接将字典-->字符串,写入文件中 with open('test.txt') as f: ret = json.load(f) print((ret, type(ret))) #输出 ({'name': 'riku', 'age': 20, 'type': 'A', '6': 6}, <class 'dict'>)
-
load通过json.load(open(’*.json’))这样的格式,从文件句柄中打开文件,加载到Python的变量中,并以字典的格式转换。而loads必须对于Python内存中的序列化对象转换成字符串。
pickle
-
只用于python
-
内存中结构化的数据<-------->格式pickle<-------->bytes类型<-------->保存文件或基于网络传输
-
pickle优缺点
-
优点
- 优点支持python中的几乎所有类型
- pickle会把数据类型序列化bytes类型
-
-
缺点
- 只支持python
-
四个功能
- 序列化
- dumps
- dump
- 反序列化
- loads
- load
- 序列化
import pickle
dic = {'name': 'riku', 'age': 20, 'type': 'A', 6: 6}
sr_dic = pickle.dumps(dic)
print(sr_dic, type(sr_dic))
dic1 = pickle.loads(sr_dic)
print(dic1, type(dic1))
#输出
b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00rikuq\x02X\x03\x00\x00\x00ageq\x03K\x14X\x04\x00\x00\x00typeq\x04X\x01\x00\x00\x00Aq\x05K\x06K\x06u.' <class 'bytes'>
{'name': 'riku', 'age': 20, 'type': 'A', 6: 6} <class 'dict'>