Python-pickle模块、json模块-序列化
pickle
用于Python特有的类型好Python的数据类型间进行转换(序列化、反序列化)。
主要功能:dumps()、dump()、loads()、load()
dump(object, file) #直接将数据写入文件中 #dump(数据,文件) dumps(object) -> string #将数据转换为字符串 #dumps(数据),转换为字符串 load(file) -> object #将文件内容读取并返回为原类型 #load(文件),转换为文件原来的类型 loads(string) -> object #将文件字符串读取并返回为原类型 #loads(文件内容),转换为原来的类型
例子:使用dump()和load()
import pickle accounts = { 1000: {'name': 'Alex LI', 'passwd': 'abc123', 'balance': 15000,}, 1001: {'name': 'Eric W', 'passwd': 'abc145323', 'balance': -15000,}, } f_name = "account.db" with open(f_name, 'wb') as f: # 将数据写入文件 pickle.dump(accounts, f) with open(f_name, 'rb') as f: # 读出文件数据并修改 acc_db = pickle.load(f) print(acc_db) #打印修改前的文件内容 acc_db[1000]['balance'] -= 1000 with open(f_name, 'wb') as f: # 将修改后数据写入文件 pickle.dump(acc_db, f) with open(f_name, "rb") as f: # 读出文件修改后的数据 acc_db = pickle.load(f) print(acc_db) #打印修改后的文件内容
例子:使用dumps()和loads()
import pickle accounts = { 1000: {'name': 'Alex LI', 'passwd': 'abc123', 'balance': 15000,}, 1001: {'name': 'Eric W', 'passwd': 'abc145323', 'balance': -15000,}, } f_name = "account.db"
with open(f_name, 'wb') as f: # 将数据写入文件 acc_db = pickle.dumps(accounts) f.write(acc_db) with open(f_name, 'rb') as f: # 读出文件数据并修改 acc_db = pickle.loads(f.read()) print(acc_db) # 打印修改前的文件内容 acc_db[1000]['passwd'] = '123123' with open(f_name, 'wb') as f: # 将修改后数据写入文件 acc_db = pickle.dumps(acc_db) f.write(acc_db) with open(f_name, "rb") as f2: # 读出文件修改后的数据 acc_db = pickle.loads(f2.read()) print(acc_db) # 打印修改后的文件内容
json
用于字符串和列表、字典的转换
主要功能:dumps()、dump()、loads()、load()
dumps() # 将列表、字典转换为字符串(序列化)
import json data = [123, 32123, 12, "ass"] data2 = {"k1": 123, "k2": "hello"} p_str = json.dumps(data) p_str2 = json.dumps(data2) print(p_str, type(p_str)) print(p_str2, type(p_str2)) # 打印: [123, 32123, 12, "ass"] <class 'str'> # 打印: {"k1": 123, "k2": "hello"} <class 'str'>
loads() # 将字符串转换为列表、字典(反序列化)
import json data = '[11,22,33,44,55,"aa"]' data2 = '{"k1":123,"k2":"hello"}'
j = json.loads(data) j2 = json.loads(data2)
print(j,type(j)) print(j2,type(j2)) #打印:[11, 22, 33, 44, 55, 'aa'] <class 'list'> #打印:{'k2': 'hello', 'k1': 123} <class 'dict'>
dump() # 将文件转换为字符串,并存入文件
load() # 读取文件内容,将字符串转换成原格式
import json data = [11, 22, 33, 44, "aa", "asd"] with open("file", "w") as f: rs = json.dump(data, f) with open("file") as f2: r = json.load(f2) print(r, type(r)) # 打印 [11, 22, 33, 44, 'aa', 'asd'] <class 'list'>

浙公网安备 33010602011771号