# 参考资料:
# python模块(转自Yuan先生) - 狂奔__蜗牛 - 博客园
# https://www.cnblogs.com/guojintao/articles/9070485.html
# ------------------------------------------------------------
# ********************day22_4-pickle模块 *******************
# ********************day22_4-pickle模块 *******************
# =====>>>>>>内容概览
# =====>>>>>>内容概览
'''
# ------------------------------------------------------------
# # 1、关于pickle 的解释
# # # Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它===>>>只能用于Python,
# # # 并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,
# # # 不能成功地反序列化也没关系。
# # # 数据进行编码之后,是bytes的格式(json是字符串格式)
# # # 编码后内容是一些我们无法识别的数据流
# ------------------------------------------------------------
# ------------------------------------------------------------
# # 2、pickle 在文件储存上的应用
# ------------------------------------------------------------
# ------------------------------------------------------------
# # 3、字典的用法补充(shelve开始前的知识补充)
# # # 可以刚开始的时候,可以先定义一个空字典,之后再通过赋值来添加
# ------------------------------------------------------------
# ------------------------------------------------------------
# # 4、shelve
# # # shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,
# # # 可读可写;key必须为字符串,而值可以是python所支持的数据类型
# # # 编码数据之后,会默认生成三个文本生成,内容都是看不懂的,
# ------------------------------------------------------------
------------------------------------------------分割线-------------------------------------------------
------------------------------------------------分割线-------------------------------------------------
------------------------------------------------分割线-------------------------------------------------
''' # ------------------------------------------------------------ # # 1、关于pickle 的解释 # # # Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它===>>>只能用于Python, # # # 并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据, # # # 不能成功地反序列化也没关系。 # # # 数据进行编码之后,是bytes的格式(json是字符串格式) # # # 编码后内容是一些我们无法识别的数据流 # ------------------------------------------------------------ ''' # # import pickle # dic = {'name':'alvin','age':23,'sex':'male'} # # print(type(dic)) # # j = pickle.dumps(dic) # print(type(j)) # # # D:Anaconda3python.exe "D:/C_cache/py/day22_os_json_re_etc_MoKuai/day22_4- pickle.py" # # <class 'dict'> # # <class 'bytes'> # # # # Process finished with exit code 0 ''' # ------------------------------------------------------------ # # 2、pickle 在文件储存上的应用 # ------------------------------------------------------------ ''' # # import pickle # dic = {'name':'alvin','age':23,'sex':'male'} # # print(type(dic)) # print("序列化".center(60,"-")) # j = pickle.dumps(dic) # print(type(j)," 序列化完成") # # # 注意是w是写入str,wb是写入bytes,j是'bytes' # f= open('序列对象_pickle','wb') # f.write(j) # # # 如果不关闭,刚刚写入的数据还放在内存中,还没有写进去,导致下面读取到的数据是“空” # # 关闭后,打开文件,里面的内容是一些我们无法识别的数据流 # # f.close() # # 如果不用上面的关闭操作,可以将在内存中的文件流通到flush操作刷入内存中,下面就可以读取到数据了 # f.flush() # print("返序列化".center(60,"-")) # f= open('序列对象_pickle','rb') # data = pickle.loads(f.read()) # print(data['age']," 返序列化完成") # # # D:Anaconda3python.exe "D:/C_cache/py/day22_os_json_re_etc_MoKuai/day22_4- pickle.py" # # <class 'dict'> # # ----------------------------序列化----------------------------- # # <class 'bytes'> # # 序列化完成 # # ----------------------------返序列化---------------------------- # # 23 # # 返序列化完成 # # # # Process finished with exit code 0 # # ******************** shelve模块 ******************* # ******************** shelve模块 ******************* # ******************** shelve模块 ******************* # ''' # ------------------------------------------------------------ # # 3、字典的用法补充(shelve开始前的知识补充) # # # 可以刚开始的时候,可以先定义一个空字典,之后再通过赋值来添加 # ------------------------------------------------------------ ''' # dic = {} # print(dic) # dic["name"] = "alex" # print(dic) # dic["infor"] = {"age":22,"sex":"male"} # print(dic) # # # D:Anaconda3python.exe "D:/C_cache/py/day22_os_json_re_etc_MoKuai/day22_4- pickle.py" # # {} # # {'name': 'alex'} # # {'name': 'alex', 'infor': {'age': 22, 'sex': 'male'}} # # # # Process finished with exit code 0 ''' # ------------------------------------------------------------ # # 4、shelve # # # shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象, # # # 可读可写;key必须为字符串,而值可以是python所支持的数据类型 # # # 编码数据之后,会默认生成三个文本生成,内容都是看不懂的, # ------------------------------------------------------------ ''' # # import shelve # f = shelve.open(r"shelve.txt") # # f['stu1_info' ] = {'name':'alvin','age':22,'sex':'male'} # f['stu2_info' ] = {'name':'ShaShu','age':33,'sex':'female'} # f['school_info'] = {'website':'oldboyedu.com','city':'BeiJing'} # # 如果不关闭,刚刚写入的数据还放在内存中,还没有写进去,导致下面读取到的数据是“空” # # 关闭后,打开文件,里面的内容是一些我们无法识别的数据流,这个是由于编码的关系 # # f.close() # # 没有该使用方式 # # f.flush() # f = shelve.open(r"shelve.txt") # print(f.get('stu1_info')['age']) # f.close() # # # D:Anaconda3python.exe "D:/C_cache/py/day22_os_json_re_etc_MoKuai/day22_4- pickle.py" # # 22 # # # # Process finished with exit code 0