python3 pickle, json

pickle 有dump ,dumps ,load,loads等方法。区别在于dumps不会写入到文件。

 1 import pickle
 2
 3 string = [‘a‘, 2341, ‘adsf‘]
 4
 5 p_str= pickle.dumps(string)
 6 print(p_str)
 7 l_str = pickle.loads(p_str)
 8 print(l_str)
 9
10 p_str1 = ‘This is a test!‘
11 with open(‘d:/python/pydev/day3/src/p.pkl‘, ‘wb‘) as file:
12     pickle.dump(p_str1, file)
13
14 with open(‘d:/python/pydev/day3/src/p.pkl‘, ‘rb‘ ) as file1:
15     l_file = pickle.load(file1)
16
17 print(l_file)

pickle

结果如下:

b‘\x80\x03]q\x00(X\x01\x00\x00\x00aq\x01M%\tX\x04\x00\x00\x00adsfq\x02e.‘
[‘a‘, 2341, ‘adsf‘]
This is a test!

‘‘‘
The file argument must have a write() method that accepts a single bytes argument.
It can thus be an on-disk file opened for binary writing
‘‘‘

注意:pickle以二进制处理,所以文件打开方式应该加上b, 如‘wb‘.‘rb‘如果仅以w方式打开则会报错,这里可能理解有误,奇怪的是json用wb会报错,而w则正常。

 1 import json
 2
 3 string = [‘a‘, 2341, ‘adsf‘]
 4
 5 p_str= json.dumps(string)
 6 print(p_str)
 7 l_str = json.loads(p_str)
 8 print(l_str)
 9
10 p_str1 = ‘This is a test!‘
11 with open(‘d:/python/pydev/day3/src/p.pkl‘, ‘w‘) as file:
12     json.dump(p_str1, file)
13
14 with open(‘d:/python/pydev/day3/src/p.pkl‘, ‘r‘ ) as file1:
15     l_file = json.load(file1)
16
17 print(l_file)

json

运行结果:

["a", 2341, "adsf"]
[‘a‘, 2341, ‘adsf‘]
This is a test!

pickle是python特有的,而json支持语言很多。另外json dump的结果是可以直接读的,pickle则不行。

时间: 2024-12-25 07:33:29

python3 pickle, json的相关文章

python使用pickle,json等序列化dict

import pickle, json, csv, os, shutil class PersistentDict(dict): ''' Persistent dictionary with an API compatible with shelve and anydbm. The dict is kept in memory, so the dictionary operations run as fast as a regular dictionary. Write to disk is d

Python3自定义json逐层解析器

用python3对json内容逐层进行解析,拿中国天气网的接口返回数据测试,代码如下: # -*- coding: utf-8 -*- import operator as op from collections import defaultdict, deque class Json(object): def __init__(self, json: str): sth = eval(json) load = lambda sth: sth if op.eq(type(sth).__name_

python3.7 json模块

#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 json模块 ''' 要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式, 比如XML,但更好的方法是序列化为JSON, 因为JSON表示出来就是一个字符串,可以被所有语言读取, 也可以方便地存储到磁盘或者通过网络传输. JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便. ''' ''' 对象(变量)从内存中变成可存储或传输的过

Python常用模块——序列化pickle&json模块

Python常用模块--序列化pickle&json模块 一.什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接收bytes. 二.为什么要序列化? 你打游戏过程中,打累了,停下来,关掉游戏,想过2天再玩.2天之后,游戏从你上次停止的地方继续运行,你上次游戏的进度肯定保存在硬盘上了,是以何种形式呢?游戏过程中产生的很多临时数据是不规律的,可能在你关掉游戏时正好有10个列表,3个嵌套字典的数据集合在内存里,需要存下来,你如何

python3之序列化(pickle&json)

1.pickle模块 python持久化的存储数据: python程序运行中得到了一些字符串,列表,字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据.python模块大全中pickle模块就排上用场了, 他可以将对象转换为一种可以传输或存储的格式. pickle模块将任意一个python对象转换成一系统字节的这个操作过程叫做串行化对象. python的pickle模块实现了python的所有数据序列和反序列化.基本上功能使用和JSON模块没有太大区别,方法也

pickle&&json

dumps和loads是成对使用的,dump和load是成对使用的. dumps和loads由于序列化的是内容,所以后面要加s,但是dump和load序列化的内容是对象,所以单数. json只能处理简单的数据类型,例如:字典.列表.字符串等,不能处理函数等复杂的数据类型. json是所有语言通用的,所有语言都支持json,如果我们需要python跟其他语言进行数据交互,那么就用json格式. json只支持简单的数据类型,pickle支持所有的数据类型. pickle只能支持python本身的序

python-函数式编程,反射,random,md5,pickle,json,re,time

函数式编程的优点: 可扩展性.可复用性(不修改以前代码).可阅读性(初学者通俗易懂) __init__:作为python包文件使用,否则只是个文件夹 __name__:文件内部调用时__name__==' __main__':外部调用时,__name__==文件名 __file__:当前文件路径 1.默认参数使用 >>> def person(name,action='eat...',where='beijing'):...     print name,action,'in '+whe

python序列化 pickle,json模块

Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类型]间进行转换 Json模块提供了四个功能:dumps.dump.loads.load pickle模块提供了四个功能:dumps.dump.loads.load pickle.dump[ojb, file [,protocol] 序列化对象,并将结果数据流写入到文件对象中. 必填参数ojb表示要封装的对象

python3处理json文件中含有中文dumps的应用

python3的编码问题一直比较简单 内存中字符串采用unicode 存储到文件中采用utf-8 以下为str,byte互相转换的过程: str = "abc学习" str Out[6]: 'abc学习' mybyte = str.encode("utf-8") mybyte Out[8]: b'abc\xe5\xad\xa6\xe4\xb9\xa0' str2 = mybyte.decode("utf-8") str2 Out[10]: 'ab