码迷,mamicode.com
首页 > Web开发 > 详细

常用模块 json 与 pickle的 使用

时间:2019-09-04 21:16:59      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:json   文字   import   imp   序列化   修改   报错   对象   序列   

json  模块

import json
from datetime import datetime


json.dumps 与 json.dump 可以将常见的数据类型转变为字符串数据


1)、对于datetime类型的数据,需要作出一些修改

data = datetime.now()

需要重写json里的一个类:
class ComplexEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o,datetime):
            return o.strftime(%Y-%m-%d %H:%M:%S)
        else:
            return json.JSONEncoder.default(self,o)

with open(json序列化,w,encoding=utf-8) as f:
    f.write(json.dumps(data,cls=ComplexEncoder)+\n)


2)、对于中文在序列化时,默认会将其装换为unicode,若有需要,可以将其保留为中文字符串

a = michale想在上海买套房

with open(json序列化,w,encoding=utf-8) as f:
    json.dump(a,f,ensure_ascii=False)
        f.write(\n)


由上可知:json.dumps()直接操作常规数据,利用write()函数将数据写入 文件里。而json.dump()直接在里面添加两个参数就可以将数据写入文件。
即:前者操作字符串写入,后者直接文件打交道。


对于json.load和json.loads而言,二者只能将字符串类型的字典给转换出来,如果文件里出现了其他类型的数据,就直接报错!

 

 

pickle 模块

pickle模块可将任意类型的数据转换为字节类型的数据存入到文件中。
当然也可以直接将这些直接类型的数据取出还原为之前的类型。

import pickle
li = [1,2,3,4,5,6,qwe,妹子]

data = pickle.dumps(li)
print(data)
#b‘\x80\x03]q\x00(K\x01K\x02K\x03K\x04K\x05K\x06X\x03\x00\x00\x00qweq\x01X\x06\x00\x00\x00\xe5\xa6\xb9\xe5\xad\x90q\x02e.‘
data1 = pickle.loads(data)
print(data1,type(data1))
# [1, 2, 3, 4, 5, 6, ‘qwe‘, ‘妹子‘] <class ‘list‘>

# 文件操作
# with open(‘pickle序列化‘,‘wb‘) as f:
#     # pickle.dump(li,f)
#     f.write(pickle.dumps(li))

with open(pickle序列化,rb) as f:
    # res = pickle.load(f)
    # print(res,type(res)) #[1, 2, 3, 4, 5, 6, ‘qwe‘, ‘妹子‘]  <class ‘list‘>
    res = f.read()
    data2 = pickle.loads(res)
    print(data2)

因为pickle模块时python独有的,虽然可以序列化任意类型的数据,但是在
文件里查看存入的数据时,会显示乱码。且不同的python版本之间可能会乱码。

 

json 与  pickle 的总结:


pickle序列化的对象为bytes对象,json序列化为str,当然也可以转码为字节类型;
pickle的序列化结果不通用,json序列化的结果通用!

 

常用模块 json 与 pickle的 使用

标签:json   文字   import   imp   序列化   修改   报错   对象   序列   

原文地址:https://www.cnblogs.com/changwenjun-666/p/11461256.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!