模块 序列化模块:json pickle
模块:一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀
模块的形象:
内置模块:安装Python解释器的时候一起安装上的
第三方模块(扩展模块):需要自己安装
自定义模块:自己写的py文件
序列化模块 json 与pickle
序列的对象:列表,元组,字符串,bytes
import json stu = {'name':'何青松','sex':'male'} ret = json.dumps(stu,ensure_ascii=False) #序列化的过程
#ensure_ascii=False 希望序列化的中文能以中文的形式被现实并且写到文件中
print(ret,type(ret)) #{"name": "何青松", "sex": "male"} <class 'str'> print(stu,type(stu)) #{'name': '何青松', 'sex': 'male'} <class 'dict'> l1 = json.loads(ret) #反序列过程 print(l1,type(l1)) #{'name': '何青松', 'sex': 'male'} <class 'dict'>
pickle 将数据类型转化成bytes类型
与json方法相同,只是转化类型不同
dump与load 操作文件的时候必须以+b打开
在load的时间,如果这个要被load的内容不再内存中,程序会报错的
pickle支持多次dump和多次load (load的时候需要进行异常处理)
import pickle class Course: def __init__(self,name,price): self.name = name self.price = price python = Course('python',29800) linux = Course('linux',25800) mysql = Course('mysql',18000) def my_dump(course): with open('pickle','ab') as f: pickle.dump(course,f) my_dump(python) my_dump(linux) my_dump(mysql) with open('pickle','rb') as f: while True: try: content = pickle.load(f) print(content.name) except EOFError: break