<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] ## 序列化概念 ### 什么叫序列化? 序列化是指把內存里的數據類型轉變成字符串,以使其能存儲到硬盤或通過網絡傳輸到遠程,因為硬盤或網絡傳輸時只能接受bytes ### 序列化模塊 用于序列化的兩個模塊 * json:用于字符串 和 python數據類型間進行轉換 * pickle:用于python特有的類型和python的數據類型間進行轉換 * shelv:簡單的k,v類型持久化的模塊,可持久化任何pickle支持的python數據格式 Json和pickle模塊都提供了四個功能:dumps、dump、loads、load ### 序列化和反序列化 * dumps 和 dump序列化方法: dumps只完成了序列化為str; dump必須傳文件描述符,將序列化的str保存到文件中 * loads和load反序列化方法: loads 只完成了反序列化; load 只接收文件描述符,完成了讀取文件和反序列化 ### json、pickle對比: * **JSON:** 優點:跨語言、體積小 缺點:只能支持int、str、list、tuple、dict * **Pickle:** 優點:專為python設計,支持python所有的數據類型 缺點:只能在python中使用,存儲數據占空間大 ## 序列化操作舉例 ### pickle模塊舉例 ``` import pickle data = {'k1':123,'k2':'Hello'} # pickle.dumps 將數據通過特殊的形式轉換為只有python語言認識的字符串 p_str = pickle.dumps(data) print('直接打印:',p_str) #pickle.dump 將數據通過特殊的形式轉換位只有python語言認識的字符串,并寫入文件 with open('t.txt','wb+') as fp: pickle.dump(data,fp) fp.seek(0) print('存后打印:',fp.read()) #輸出結果 直接打印: b'\x80\x03}q\x00(X\x02\x00\x00\x00k1q\x01K{X\x02\x00\x00\x00k2q\x02X\x05\x00\x00\x00Helloq\x03u.' 存后打印: b'\x80\x03}q\x00(X\x02\x00\x00\x00k1q\x01K{X\x02\x00\x00\x00k2q\x02X\x05\x00\x00\x00Helloq\x03u.' ``` ### json模塊舉例 ``` import json data = {'k1':123,'k2':'Hello'} # json.dumps 將數據通過特殊的形式轉換位所有程序語言都認識的字符串 j_str = json.dumps(data) print('直接打印:',j_str) #json.dump 將數據通用的json格式字符串,并寫入文件 with open('t.txt','w+',encoding='utf-8') as fp: json.dump(data,fp) fp.seek(0) print('存后打印:',fp.read()) #輸出結果 直接打印: {"k1": 123, "k2": "Hello"} 存后打印: {"k1": 123, "k2": "Hello"} ``` ## shelve模塊舉例 前兩個模塊都可以序列化為字符串后序列化存儲到文件中并反序列化出來,但shelve模塊只能序列化到文件和反序列化出來,不能直接序列化為字符串 ### shelve序列化: ``` import shelve names = ["alex", "rain", "test"] info = {'name':'alex','age':22} f = shelve.open('tt.txt') # 打開一個文件 f["names"] = names # 持久化列表 f['info_dic'] = info f.close() ``` ### shelve反序列化: ``` import shelve d = shelve.open('tt.txt') # 打開一個文件 print('name:',d['names']) print('info:',d['info_dic']) del d['test'] #還可以刪除 # 輸出結果 name: ['alex', 'rain', 'test'] info: {'name': 'alex', 'age': 22} ``` * 其他 用shelve打開文件后,還可以刪除序列化后的某些內容。 `del d['info_dic']`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看