1. 程式人生 > 實用技巧 >我的python菜鳥之路19

我的python菜鳥之路19

---------------------------模組基礎知識補充------------------------------

在第180節課路徑的引入是python更新的原因嗎???

  • **print(_ file _) :file雙下劃線------->表明執行當前任務的路徑 **

    #列印當前目錄的上一級目錄
    import os
    v1 = os.path.dirname(__file__)
    print(v1)
    

關於json函式的補充

  • json中關於python的對照表

  • 當字典、列表、元組序列化中出現的漢字,如何讓漢字完全的表現出來

    v = {'k1':'yang','k2':'楊子列'}
    import json
    val = json.dumps(v,ensure_ascii=False) #引入ensure_ascii=False
    print(val)
    
  • 注意區分以下結果關於元組的

    v = ('楊子列','楊馳')
    import json
    val = json.dumps(v)
    print(val)
    
    v = ('楊子列','楊馳',[1,2,3]) #元組是可以做json的容器的,但作為容器中一個元素會被當做列表
    import json
    val = json.dumps(v)
    print(val)
    
    v = [('楊子列','楊馳')]
    import json
    val = json.dumps(v)
    print(val) 
    #此處生成的元組是一個列表
    
  • json.dump

    • 序列化後並寫入一個指定的檔案

      f = open('x.txt',mode='w',encoding ="utf-8")
      v = ('楊子列','楊馳',[1,2,3])
      import json
      val = json.dump(v,f)
      print(val)
      
  • json.load

    • 將檔案中的內容反序列化

      f = open('x.txt',mode='r',encoding ="utf-8")
      import json
      val = json.load(f)
      f.close()
      print(val)
      
      

json和pickle

  • json, 優點:所有語言通用; 缺點:只能序列化基本內容

  • pickle,優點:python中所有東西均能被序列化(socket物件除外),缺點:不可讀,序列化的內容只有python認識

  • 利用pickle進行序列化與樊序列化

#利用pickle模組對集合進行序列化與反序列化
v = {1,2,3,3}
import pickle
val = pickle.dumps(v)
print (val)
data = pickle.loads(val)
print(data)
#元組作為一個元素同樣是可行的
v = (1,2,3,3,[1,2,3])
import pickle
val = pickle.dumps(v)
print (val)
data = pickle.loads(val)
print(data)
  • **利用pickl對函式進行序列化與反序列化 **

    def func():
        print("yang")
    import pickle
    v1 = pickle.dumps(func)
    v2 = pickle.loads(v1)
    print(v1,v2,sep = "\n") #sep:同時列印兩個物件時進行換行
    
    • pickle的dump和loads

      import pickle
      v = {1,2,3,4}
      print(pickle.dumps(v)) #此處呈現的是二進位制,因此在讀檔案時的是二進位制的
      f = open('x.txt',mode="wb")
      v1 = pickle.dump(v,f)
      print(v1)
      f = open('x.txt',mode="rb")
      v2 = pickle.load(f)
      print(v2)