json模块

用于文件处理时其他数据类型与js字符串之间转换。在将其他数据类型转换为js字符串时(dump方法),首先将前者内部所有的单引号变为双引号,再整体加上引号(单或双)转换为js字符串;再使用时再将js字符串还原为本来的数据(load方法)。

两对方法json.dumps()和json.loads(),json.dump()和json.load()

(在html前端,JSON.stringify(v)可将其他格式数据转化为json字符串,JSON.parse(str)可将json字符串还原为原格式)

但是dump和load不是必须同时使用的,只要字符串满足json规则(引号全部为双引号),可以直接使用load读取。

import json
l=[1,'hello',{'name':'Alex'}]
with open('new.txt','w') as f:
    l_str=json.dumps(l)  #将列表l转换为js字符串
    f.write(l_str)  #将字符串写入文本
    print(l_str, type(l_str))  #输出[1,"hello", {"name": "Alex"}] <class 'str'>,可以看见原列表中所有的单引号全部变成了双引号

with open('new.txt','r') as f:
    l=f.read()
    print(l,json.loads(l),type(json.loads(l)))  #输出[1,"hello", {"name": "Alex"}] [1,'hello', {'name': 'Alex'}] <class 'list'>

上述最后一行可以看见,由于写入时为js字符串,直接读取时也为js字符串,即引号全部为双引号,而json.loads()是将json处理过的字符串变成了原来的列表,并且处理过的双引号全部变回了单引号

在上述文件中,转换和写操作l_str=json.dumps(l)和f.write(l_str)可以用一步json.dump(l,f)代替

在上述文件中,读和转换操作l=f.read()和json.loads(l)可以用一步json.load(f)代替

pickle模块

pickle的用法类似于json,不同的是json是将其它数据类型与字符串进行转换,而pickle是将其它数据类型与字节进行转换,由于是与字节进行转换,所以打开文件时需要以b的方式。

通过pickle把变量从内存中变成可存储或可传输的过程称之为序列化,反之,把变量内容从序列化的对象重新读取到内存里称之为反序列化。

import pickle
l=[1,'hello']
with open('c.txt','wb') as f:
    pickle.dump(l,f)

with open('c.txt','rb') as f:
    print(pickle.load(f))

shelve模块

shelve是通过键值对,即字典的形式去存储数据的,键必须为字符串,值可以为任何python数据类型。

shelve只有open和close方法,open的时候参数为文件名,执行之后会生成后缀分别为dat、bak、dir的三个文件

import shelve
s=shelve.open('test')  #参数为文件名,执行之后会生成test.dat、test.bak、test.dir,此时s相当于一个孔字典
s['one']=12  #通过字典的方式给赋值
s['two']={'name':'Alice','age':19}
s['three']=[1,'hello']
s.close()
s=shelve.open('test')
print(s['one'])  #输出12
print(s['two']['age'])  #输出19
s['one']=20  #直接通过字典的方式修改值
s.close()

python模块-json、pickle、shelve的更多相关文章

  1. python模块--json \ pickle \ shelve \ XML模块

    一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...

  2. python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)

    一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...

  3. 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 ...

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

    一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文 ...

  5. python序列化模块 json&&pickle&&shelve

    #序列化模块 #what #什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程叫做序列化. #why #序列化的目的 ##1.以某种存储形式使自定义对象持久化 ##2.将对象从一个地方传递 ...

  6. Python(序列化json,pickle,shelve)

    序列化 参考:https://www.cnblogs.com/yuanchenqi/articles/5732581.html # dic = str({'1':'111'}) # # f = ope ...

  7. 模块 - json/pickle/shelve/xml/configparser

    序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化: 有种办法可以直接把内存数据(eg:10个列表,3 ...

  8. python_ 模块 json pickle shelve

    一,什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码( ...

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

    一.json模块(重点) 一种跨平台的数据格式 也属于序列化的一种方式 介绍模块之前,三个问题: 序列化是什么? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化. 反序列化又是什么? 将 ...

  10. 保存数据到文件的模块(json,pickle,shelve,configparser,xml)_python

    一.各模块的主要功能区别 json模块:将数据对象从内存中完成序列化存储,但是不能对函数和类进行序列化,写入的格式是明文.  (与其他大多语言交互的类型) pickle模块:将数据对象从内存中完成序列 ...

随机推荐

  1. img图片不存在时设置默认图片

    当在页面显示的时候,万一图片被移动了位置或者丢失的话,将会在页面显示一个带X的图片,很是影响用户的体验.即使使用alt属性给出了"图片XX"的提示信息,也起不了多大作用. 其实,可 ...

  2. Oracle 分析函数的使用(主要是rollup用法)

    分析函数是oracle 8.1.6中就引入的一个全新的概念,为我们分析数据提供了一种简单高效的处理方式.在分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现在 ...

  3. 去除Layer自带隐藏动画

    在TableView的HeadView设置的时候(HeadView是刚刚创建和设置的),会出现很多不想看到的动画,此时可以增加代码去除这些动画 [CATransaction begin]; [CATr ...

  4. 启动了SSH服务后,一定要关闭Telnet服务

    https://baike.baidu.com/item/ssh/10407 https://baike.baidu.com/item/Telnet/810597

  5. 单机闭环 使用Nginx+Lua开发高性能Web应用

    [西域骆驼D1532101213]西域骆驼(VANCAMEL)D1532101213 休闲套脚鞋 卡其43[行情 报价 价格 评测]-京东 http://item.jd.com/1856564.htm ...

  6. CSS表单设计

    今天我们开始学习<十天学会web标准(div+css)>的css表单设计,包含以下内容和知识点: 改变文本框和文本域样式 用图片美化按钮 改变下拉列表样式 用label标签提升用户体验 一 ...

  7. Javascript修正this的引用

    1.使用this作为参数来传递给函数.因为this始终与当前对象一致. <!DOCTYPE html> <html> <head> <meta charset ...

  8. (1.3)mysql 事务控制和锁定语句

    (1.3)mysql 事务控制和锁定语句 lock table 参考转载自:https://www.cnblogs.com/kerrycode/p/6991502.html 关键词:mysql loc ...

  9. dedecms文章页调用地址(当前文章URL)如何操作?

    我们在建站时经常会在文末加一个本文地址,那么dedecms文章页如何调用当前文章URL呢?这样做的好处是增加文章的唯一标识,更进一步的做法是在head中加个cannacial标签,告诉搜索引擎url的 ...

  10. Java-idea-eclipse-快捷键【mac,win】

    Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ...