###
序列化模块
# 序列化模块 ############################################################# # 序列化是什么? # 现在的序列化都是转向一个字符串数据类型, # 我们说的序列就是字符串, # 为什么要千方百计的转换成为字符串呢? # 如果一个字典{"k":"v"}为什么要转成字符串 # 我往文件或者数据库里面写内容的时候是不能写入字典的,可以写入字符串, # 还有在网络上传输的时候,我需要传递的是byte类型,怎么把字典转换成为一个byte类型呢, # 就要先转换为字符串,然后字符串转换为byte类型, # 基本就是这两种情况,需要序列化, # 这种从数据类型转为字符串,就是序列换, # 把字符串转换为数据类型的操作,就是反序列化, ################################################################ # json模块 # 现在有一个模块就是json模块, 这是非常重要的一个模块 # 你和别人进行数据交换的时候一定要使用这个, # 还有这个模块pickle,这个也可以序列化, # 这个模块shelve,没有这个模块不影响,这是你要知道, # 不是所有的类型都能通过json模块 转换为字符串的, # 这是json模块的弊端,但是json是一个通用的模块,别的语言可以解开, # pickle这个模块可以把所有的数据类型,转换成为字符串形式, # 但是有问题,序列化的内容只能Python来解开,别的语言不识别, # 而且反序列化需要依赖Python代码, # shelve,使用句柄直接操作非常方面,但是这个模块是一个新模块, ########################################################################## # 序列化代码 # 我就是想要把一个字典转换成为一个字符串, # import json # dic = {"k":'v'} # print(type(dic),dic) # ret = json.dumps(dic) # 这就是序列化 # print(type(ret),ret) # ret =json.loads(ret) # print(type(ret),ret) # dumps是序列化方法,loads是反序列化方法, # 可以序列化的数据类型,数字,字符串,列表,字典,元组, # 但是在json里面就只认识列表和字典, ############################################ # json还有两个方法, dump和load # 要使用这两个,需要打开一个文件, # dic = {1:"a",2:"b"} # f = open("fff","w",encoding="utf-8") # json.dump(dic,f) # # 正常是不能把一个字典写入文件的,但是使用这个方法,可以把字典序列化然后存入字典, # f = open("fff","r") # ret = json.load(f) # # 这是往文件外边取 # f.close() # print(ret) # 使用这个dump和load,必须是一次性的写进去,然后一次性的读出来, # 如果你写入两次,然后读取两次,会报错的,
####
####