python常用模块——json、pickle、shelve

常用模块 json  pickle shelve

json模块和pickle模块很像,方法都一样;json在js、python、java等等中通用,而pickle是python里的。

一、 json模块

  json模块只需要掌握 dumps和loads即可;另外两个用到时再补充吧;

1. dump()

格式如下:

  • dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
    

fp为文件句柄;和dumps类似,区别举例见dumps;

2. load()

格式如下:

  • load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
    

fp为文件句柄;和loads类似,区别举例见loads;

3. dumps()

格式如下:

  • dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
    

将字典、列表等转换为json格式; 文件中只能写入str格式,故dict必须转换为json或者强制转换str;

例1和例2等效;一个用的是dumps,一个是dump;

  • 例1:
        import json
        dict = {‘name‘:‘superman‘,‘job‘:‘IT‘}
        f = open(‘json_txt‘,‘w‘)
    
        json_data = json.dumps(dict)
        f.write(json_data)
    
        f.close()
    
    例2:
        import json
        dict = {‘name‘:‘superman‘,‘job‘:‘IT‘}
        f = open(‘json_txt‘,‘w‘)
    
        json.dump(dict,f)
    
        f.close()
    

4. loads()

格式如下:

  • loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
    

将json等字符串格式转换为字典等原有的格式; 从文件中读取内容为 str格式,并不是字典等对象类型;需要转换回去才可以当做对象处理;

例1和例2等效;一个用的是loads,一个是load;

  • 例1:
        import json
        f = open(‘json_txt‘,‘r‘)
        dict = json.loads(f.read())
        print(dict[‘name‘])         # 输出 superman
    
    例2:
        import json
        f = open(‘json_txt‘,‘r‘)
        dict = json.load(f)
        print(dict[‘name‘])         # 输出 superman
    

二、 pickle模块

  pickle模块的方法和json一样。唯一的区别是转换为pickle后,需要二进制模式才可以写进文件;pickle支持更多的格式(比如类);

1. dump()

格式如下:

  • dump(obj, file, protocol=None, *, fix_imports=True)
    

    和json模块的dump一样;

2. load()

格式如下:

  • load(file, *, fix_imports=True, encoding=‘ASCII‘, errors=‘strict‘)
    

和json模块的load一样;

3. dumps()

格式如下:

  • dumps(obj, protocol=None, *, fix_imports=True)
    

将字典、列表等转换为pickle特有格式;

例如:

  • import pickle
    dict = {‘name‘:‘superman‘,‘job‘:‘IT‘}
    pickle_data = pickle.dumps(dict)
    f = open(‘pickle_txt‘,‘wb‘)         # 注意,这里要用二进制模式写
    f.write(pickle_data)
    f.close()
    

4. loads()

格式如下:

  • loads(data, *, fix_imports=True, encoding=‘ASCII‘, errors=‘strict‘)
    

将pickle格式转换为字典等原有的格式; 从文件中读取内容为pickle处理过的一种str格式,并不是字典等对象类型;需要转换回去才可以当做对象处理;

例如:

  • import pickle
    f = open(‘pickle_txt‘,‘rb‘)         # 注意,要二进制模式读
    dict = pickle.loads(f.read())
    print(dict[‘name‘])         # 输出 superman
    

三、shelve 模块

  shelve模块只有一个方法open;使用shelve模块存储字典更方便;会生成三个文件存储,.bak/.dat/.dir三个格式的文件;

  如下例中,实际是一个嵌套字典: f = {‘info‘:‘{‘name‘:‘wjz‘,‘job‘:‘IT‘}‘};

open()

格式如下:

  • open(filename, flag=‘c‘, protocol=None, writeback=False)
    

例1:存储字典

  • import shelve
    f=shelve.open(‘shelve_txt‘)             # 生成 shelve_txt.bak  shelve_txt.dat  shelve_txt.dir三个文件;
    f[‘info‘]={‘name‘:‘wjz‘,‘job‘:‘IT‘}     # 将字典info存入shelve_txt;
    

例2:从shelve存储的文件中取字典

  • import shelve
    f=shelve.open(‘shelve_txt‘)
    print(f[‘info‘])                        # 等效 print(f.get(‘info‘)) ,输出字典{‘name‘:‘wjz‘,‘job‘:‘IT‘}

原文地址:https://www.cnblogs.com/hacker001/p/10094743.html

时间: 2024-11-16 04:12:39

python常用模块——json、pickle、shelve的相关文章

常用模块(json/pickle/shelve/XML)

一.json模块(重点) 一种跨平台的数据格式 也属于序列化的一种方式 介绍模块之前,三个问题: 序列化是什么? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化. 反序列化又是什么? 将硬盘上存储的中间格式数据在还原为内存中的数据结构 为什么要序列化? 1.持久保持状态 2.跨平台数据的交互 JSON是什么? java script object notation 就是对象表示法 var obj = {"name":"egon"} 对于我们开发而言 j

Python常用模块——json,pickle模块

什么是序列化? 序列化是指把内存里的数据类型转变成字符串,使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接收bytes. 为什么要序列化? 我们编写的程序,会涉及到各种各样的对象.数据结构,它们通常是以变量的形式在内存中存在着.当程序运行结束后,这些变量也就会被清理.但我们有时希望能够在下一次编写程序时恢复上一次的某个对象(如机器学习中的到结果,需要程序运行较长时间,多次运行时间成本太大),这就需要我们将变量进行持久化的存储.一种方式是利用文件读写的方式将变量转化为某种形式的字符

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,

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

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

python序列化: json & pickle & shelve 模块

一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进行转换Json模块提供了四个功能:dumps.dump.loads.loadpickle模块提供了四个功能:dumps.dump.loads.load json模块:下面通过一些示例来学习:首先我们来看json的dumps和loads方法 s1={"k1":"v1"}

python开发模块基础:序列化模块json,pickle,shelve

一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文件里,然后另一个python程序再从文件里读出来.但是我们都知道,对于文件来说是没有字典这个概念的,所以我们只能将数据转换成字典放到文件中.你一定会问,将字典转换成一个字符串很简单,就是str(dic)就可以办到了,为什么我们还要学习序列化模块呢?没错序列化的过程就是从dic 变成str(dic)的

python 初学(json pickle shelve)

json: # _author: lily # _date: 2019/1/19 import json my_dict = {'name': 'lily', 'age': 18} f = open('JSON_text', 'w') # data = json.dumps(my_dict) # f.write(data) # 上面两句等价于 json.dump(my_dict, f) f.close() # _author: lily # _date: 2019/1/20 import jso

模块-json,pickle

# json pickle shelve模块 序列化 # json模块 用在不同语言之间的数据传输,但是限定数据类型:str,int,list,dict,布尔值 import json # 四种方法: # dumps和loads:用于网络数据传输 和 多个数据写入一个文件中 dict = {'wo':'good_person','ni':'bad_person'} ret = json.dumps(dict,ensure_ascii=False) # {"wo": "good

实战篇一 python常用模块和库介绍

# [email protected] coding: utf-8 [email protected] -- Python 常用模块和库介绍 第一部分:json模块介绍 import json 将一个Python数据结构转换为JSON: dict_ = {1:2, 3:4, "55":"66"} # test json.dumps print type(dict_), dict_ json_str = json.dumps(dict_) print "js