json:dumps/loads & pickl
---------------------------模块基础知识补充------------------------------
在第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)
 
- 
    记录学习的点点滴滴
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号