模块
序列化模块,随机数模块,
json:将数据格式化成字符串的过程是序列化,反过来是反序列化.
常用方法:
dumps:将数据序列化成字符串,保存到内存中.
dump:将数据序列化成字符串,保存在文件中.
loads:将内存中的序列化字符串,反序列化成数据
load:将文件中的序列化字符串,反序列化成数据
json只能序列化python中常见的数据类型,集合这种数据类型就不能识别.
它的特点是比较通用.简单.
json字符串保存在文件中,反序列化时只能一次性都反序列化到内存中,没有办法将多次序列化的内容分开反序列化.
如何实现将多次序列化的内容依次反序列化?
可以先把多次需要序列化成json的数据先序列化到内存中,然后在数据后添加换行符.再把这样的数据写到文件中.
反序列化时,只需要依次读取文件中的内容,并按照行为单位,再依次进行反序列化,就可以的到每次序列化的结果.
pickle模块:
pickle模块是一种专门针对python设计的序列化方案,它可以对python中所有的数据类型进行序列化,而不会产生数据丢失.
pickle序列化产生的结果是字节序列.
所以,在往文件中序列化数据时,要求文件的使用方式一定是二进制格式.
使用方式上和json基本一致.
dumps:将数据序列化成字符串,保存到内存中.
dump:将数据序列化成字符串,保存在文件中.
loads:将内存中的序列化字符串,反序列化成数据
load:将文件中的序列化字符串,反序列化成数据
shelve模块:
主要用来将数据进行本地存储,而不是通过网络传输.
序列化过程中一定要使用到本地文件,并且会产生多个文件用于文件的存储.
数据一旦序列化,就可以像使用字典一样方便查找和使用.
常用的方法就是打开文件的方法:open,这也说明了这个模块主要作用就是对数据进行持久化使用的,而非是网络传输.
import shelve
db = shelve.open('a.txt')
db['name'] = 'abc'
db['info'] = {'email':'abc@abc.com','addr':'BeiJing'}
序列化:最终目的:
实现了数据和程序的分离!!!!
随机数模块:random
1.获取一个[0,1)之间的浮点数
2.获取一个区间之内的整型值.randint(start,end)
3.从一个序列中获取一个随机的元素:random.choice
4.洗牌:shuffle
os操作系统模块:
参考笔记
sys模块:
参考笔记
hashlib模块:
主要是md5加密函数.
md5加密的主要步骤是:
1.创建一个md5加密对象,此时可以指定盐,也必须是字节序列类型.
2.针对字节序列类型的数据进行加密.
3.使用hexdigest或者是digest获取加密后的结果字节序列.
前者返回值是字符串,后者返回值是字节序列
md5加密主要使用场景:
用于对已经存在的密文和另一个用同样算法得到的密文进行比对.以此判断两个明文是否一致.
而并不是从一个密文中将明文还原.
time模块
和时间相关的模块.
主要掌握如何获取一个格式时间字符串,strftime.
此模块中主要有三种数据类型:
1.struct_time
2.格式化时间字符串
3.时间戳
gmtime,localtime这两个函数如果不加任何参数的话,结果就是一个结构化时间对象.它是一个包含了9个字段的一个对象.
这9个字段的值都是可以单独取出的.
通过这个结构化时间对象,可以转化成一个可读性强的时间字符串.
time.strftime('%Y-%m-%d')
'2019-03-20'
结构化时间对象strftime->时间字符串
时间字符串strptime->结构化时间对象
结构化时间对象 mktime->时间戳
时间戳gmtime,localtime->结构化时间对象