模塊 序列化模塊: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
相關文章
相關標籤/搜索