模块 序列化模块:json pickle

模块:一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀

  模块的形象:python

    内置模块:安装Python解释器的时候一块儿安装上的mysql

    第三方模块(扩展模块):须要本身安装linux

    自定义模块:本身写的py文件sql

序列化模块 json 与pickle

  序列的对象:列表,元组,字符串,bytesjson

序列化的定义:把一个数据类型转换成字符串,bytes类型的过程网络

为何要把数据类型序列化spa

  当你须要把一个数据类型存储在文件中的时候code

  当你须要把一个数据类型经过网络传输的时候对象

  使用eval() 有风险,因此通常状况下不能使用blog

json模块:将少许的数据类型转化成字符串的形式

  应用场景:

    在网络操做中,以及多语言环境中,要传递字典,数字,字符串,列表等简单的数据类型的时候使用。

  优势:对于全部语言都通用

  缺点:只支持数字,字符串,列表,字典(key值必须是可hash的,即不可变的数据类型)的数据类型

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'>

  import json

  方法 dumps() 序列化   loads()反序列化 

  dumps()   dic--->str   序列化方法

  loads(str)    str----> dic/list   反序列化方法

  dump(dic/lis,f)    dic/list------->文件,序列化方法

  load(f)    文件中-----》dic/list    反序列化方法。能够进行屡次dump进入文件中的数据,可是load会报错

  参数:ensure_ascii=False 但愿序列化的中文能以中文的形式被显示而且写入文件中

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
相关文章
相关标签/搜索