保存数据到文件的模块(json,pickle,shelve,configparser,xml)_python
一、各模块的主要功能区别
json模块:将数据对象从内存中完成序列化存储,但是不能对函数和类进行序列化,写入的格式是明文。 (与其他大多语言交互的类型)
pickle模块:将数据对象从内存中完成序列化存储,可以能对函数进行序列化,写入的格式是二进制格式wb。 (支持python的所有数据类型,python特有的)
configparser模块:保存字典内容到文件,并按照一定的格式写入文件保存。
shelve模块:将对象写入到文件,保存没有格式。(较为轻便好用)

xml模块:不同语言或程序之间数据交换(早期常用,目前较少用,逐渐被json取代)。
二、各模块使用例子
1、configparser模块
(1)写入文件
import configparser
config=configparser.ConfigParser()
config['default']={'name':'chen','age':21,'sex':'male'} #字典格式的内容1
config['default2']={'class':'1','num':'43','team':'6'} #字典格式的内容2
f=open('configfile','w') #创建一个文本
config.write(f) #将字典内容写入文本
保存格式:

(2)读取文件内容
config=configparser.ConfigParser()
config.read('configfile.ini')
print(config.sections()) #['default', 'default2'],查看键值
print(config['default']['age']) #21,读取分区里面键值内容 (3)修改文件内容
config=configparser.ConfigParser()
config.read('configfile.ini') #先读取文件放到内存
config.remove_section('default2') #对内存文件进行修改,这里是删除分区
config.set('default','name','chenchenchen') #将分区里面的'name'键对应的值改为'chenchen'
config.add_section('ddd') #增加分区
config.set('ddd','dddd','ddddd') #添加分区内容
f=open('configfile.ini','w') #直接覆盖
config.write(f) #将已修改的内存文件内容保存到硬盘文件 2、shelve模块(较为轻便,好用)
(1)写入文件
import shelve
f=shelve.open('shelvetest') #创建文件
f['default']=1 #写入内容,值可以是数值,字典,函数等等数据类型
f.close()
(2)读取文件
f=shelve.open('shelvetest') #创建文件
data=f.get('default')
print(data) #1
f['default']={'name':'chen','age':21,'sex':'male'}
data=f.get('default')
print(data) #{'name': 'chen', 'age': 21, 'sex': 'male'}
保存格式:

3、json模块
(1)写入文件
import json
dic={'name': 'chen', 'age': 21, 'sex': 'male'}
data=json.dumps(dic) #序列化简化
f=open('json.txt','w')
f.write(data) #写入
f.close()
保存格式:明文

(2)读取文件
f=open('json.txt','r')#打开文件
data=f.read() #读取文件
data=json.loads(data) #反序列化,反简化
print(data)
注:一般使用dump一次和load一次,否则数据容易混乱
4、pickle模块(对比json,可以对包括函数和类的对象做序列化)
(1)写入文件
import pickle
def add():
print('add')
data=pickle.dumps(add)
f=open('pickle.txt','wb') #注意这里写入的是二进制格式,不是明文,这也是与json不同的点
f.write(data)
f.close()
保存格式:

(2)读取文件
f=open('pickle.txt','rb') #对应也是需要二进制b读取
data=f.read()
data=pickle.loads(data) #取出变量名
data() #函数取出的是变量名add,需要执行的话脚本里面还要有add函数本体。若是保存其他对象的话,可以直接打印,如列表
json和pickle模块通用方法:
dump(简化,相当于dumps和write的功能)
f=open('pickle.txt','wb')
data=pickle.dump(add,f) #相当于后面两行
# data=pickle.dumps(add)
# f.write(data)
f.close()
load(简化,相当于loads和read的功能)
f=open('pickle.txt','rb')
data=pickle.load(f) #相当于后面两行一起
# data=f.read()
# data=pickle.loads(data) #
print(data)
5、xml模块(了解)
不同语言或程序之间数据交换的协议
(1)python处理xml




(2)修改
读取之后修改写回

修改之后:

(3)删除:

(4)创建:

保存数据到文件的模块(json,pickle,shelve,configparser,xml)_python的更多相关文章
- python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)
一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...
- 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 ...
- python模块--json \ pickle \ shelve \ XML模块
一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...
- python开发模块基础:序列化模块json,pickle,shelve
一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文 ...
- python序列化模块 json&&pickle&&shelve
#序列化模块 #what #什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程叫做序列化. #why #序列化的目的 ##1.以某种存储形式使自定义对象持久化 ##2.将对象从一个地方传递 ...
- python_ 模块 json pickle shelve
一,什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码( ...
- 模块 - json/pickle/shelve/xml/configparser
序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化: 有种办法可以直接把内存数据(eg:10个列表,3 ...
- 序列化 json pickle shelve configparser
一 什么是 序列化 在我们存储数据或者 网络传输数据的时候,需要对我们的 对象进行处理,把对象处理成方便我们存储和传输的 数据格式,这个过程叫序列化,不同的序列化,结果也不相同,但是目的是一样的,都是 ...
- 常用模块(json/pickle/shelve/XML)
一.json模块(重点) 一种跨平台的数据格式 也属于序列化的一种方式 介绍模块之前,三个问题: 序列化是什么? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化. 反序列化又是什么? 将 ...
随机推荐
- mybatis_day01
Mybatis01 1.什么是mybatis 1.1mybatis 一个基于Java的持久层框架 1.2持久层 操作数据库那层代码 项目分层: 界面层(jps/controller) 业务层(serv ...
- GraphQL + React Apollo + React Hook 大型项目实战(32 个视频)
GraphQL + React Apollo + React Hook 大型项目实战(32 个视频) GraphQL + React Apollo + React Hook 大型项目实战 #1 介绍「 ...
- modules模块
模块操作一 temp.js export var a='eternity'; index.js 跟temp.js同路径 import {a} from ./temp; 模块操作二 temp.js ex ...
- 论文阅读笔记(十六)【AAAI2018】:Region-Based Quality Estimation Network for Large-Scale Person Re-Identification
Introduction (1)Motivation: 当前的行人重识别方法都只能在标准的数据集上取得好的效果,但当行人被遮挡或者肢体移动时,往往效果不佳. (2)Contribution: ① 提出 ...
- sql 根据查询的记录生成序号的几种方式
row_number() order() 函数会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号. ra ...
- WinForm WebBrowser 设置IE版本
public enum IeVersion { IE7 = , IE8 = , IE9 = , IE10 = , IE11 = }; /// <summary> /// 修改注册表信息来兼 ...
- windows 2012 r2怎么进入本地组策略
可以使用命令行或使用 Microsoft 管理控制台 (MMC) 打开本地组策略编辑器.通过命令行打开本地组策略编辑器的步骤单击“开始”,在“开始搜索”框中键入 gpedit.msc,然后按 Ente ...
- openlayers编辑区域
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 【BZOJ 1022】 [SHOI2008]小约翰的游戏John(Anti_SG)
Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取 的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不 ...
- RBAC基于角色的权限管理模型
一.权限管理模型的必要性: a. 安全性:防止误操作,防止数据泄露,保证信息的安全. b. 数据隔离:保持不同的角色具有不同的权限,只能看到自己权限范围内的数据 二.权限管理模型的发展: a. 传统的 ...