datetime模块
相比time来说,datetime模块接口更直观,更容易调用
方法(类) | 描述 |
---|---|
datetime.date | 表示日期(类),常用属性year,month,day |
datetime.time | 表示时间(类),常用属性hour,minute,second,microsecond |
datetime.datetime | 表示日期 |
datetime.timedelta | 表示时间间隔 |
datetime.tzinfo | 与时区有关的信息 |
>>> datetime.datetime.now()
datetime.datetime(2019, 7, 26, 10, 2, 18, 295171)
>>> print(datetime.datetime.now())
2019-07-26 10:02:45.906965
sys模块
sys模块是与python解释器交互的一个接口
处理命令行参数
在解释器启动后,argv列表包含了传递脚本的所有参数,列表的第一个元素是脚本自身的名称。
序列化模块
序列化概念:
将一个对象从内存中转换为可存储(字符串类型)或者可传输(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只支持列表,字典,数值,字符串以及布尔值
查看json的方法和属性
四个功能
- dump
- dumps
- loads
- load
dic={"name":"city","age":20,"typr":"un"}
>>> sr_dic=json.dumps(dic)
>>> type(sr_dic)
<class 'str'>
>>> sr_dic
'{"name": "city", "age": 20, "typr": "un"}'
# 序列化过程
>>> dic_2=json.loads(sr_dic)
>>> type(dic_2)
<class 'dict'>
>>> dic_2
{'name': 'city', 'age': 20, 'typr': 'un'}
如果是元组,序列化时强转为列表;若元组作为字典的键,序列化时报错。
如果把数据类型直接序列化写入文件中,可以用dump和load方法。
import json
dic = {"name": "city college", "age": 20, "type": "university", 2: 6}
with open('dump_json', 'w') as f:
json.dump(dic, f) #dump方法可以接收一个文件句柄。直接将字典--->字符串,写入文件中
with open('dump_json') as f:
ret = json.load(f)
print(ret, type(ret))
import json
dic = {"name": "city college", "age": 20, "type": "university", 2: 6}
dic2 = {"city": "HangZhou", "history": 5000}
with open('dump_json', 'w') as f:
str_dic1 = json.dumps(dic)
str_dic2 = json.dumps(dic2)
f.write(str_dic1 + '\n')
f.write(str_dic2 + '\n')
with open('dump_json') as f:
for line in f:
ret = json.loads(line)
print(ret)
#
{'name': 'city college', 'age': 20, 'type': 'university', '2': 6}
{'city': 'HangZhou', 'history': 5000}
pickle
只用于python
内存中结构化的数据<—>格式pickle<—>bytes类型<—>保存在文件或者基于网络传输
pickle的优缺点
-
优点
- 支持python中几乎所有类型
- pickle会把数据类型序列化为bytes类型
-
缺点
- 只支持python
模块提供四个功能
- 序列化
- dumps
- dump
- 反序列化
- load
- loads
import pickle
dic ={"name":"city","age":20,"type":"university",2:6}
dic_b=pickle.dumps(dic)
print(type(dic_b))
dic_b=pickle.loads(dic_b)
print(type(dic_b))
#
<class 'bytes'>
<class 'dict'>
":20,"type":"university",2:6}
dic_b=pickle.dumps(dic)
print(type(dic_b))
dic_b=pickle.loads(dic_b)
print(type(dic_b))
#
<class 'bytes'>
<class 'dict'>