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'>

 

posted @ 2016-05-18 19:04  阿金study  阅读(133)  评论(0)    收藏  举报