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

一、各模块的主要功能区别

configparser模块:保存字典内容到文件,并按照一定的格式写入文件保存。

shelve模块:将对象写入到文件,保存没有格式,较为轻便。

json模块:将对象从内存中完成序列化存储,但是不能对函数和类进行序列化,写入的格式是明文。

pickle模块:将对象从内存中完成序列化存储,可以能对函数进行序列化,写入的格式是二进制格式。

xml模块:不同语言或程序之间数据交换(较少用)

二、各模块使用例子

1、configparser模块

(1)写入文件

import configparserconfig=configparser.ConfigParser()config[‘default‘]={‘name‘:‘chen‘,‘age‘:21,‘sex‘:‘male‘}  #字典格式的内容1config[‘default2‘]={‘class‘:‘1‘,‘num‘:‘43‘,‘team‘:‘6‘}  #字典格式的内容2f=open(‘configfile‘,‘w‘)    #创建一个文本config.write(f)     #将字典内容写入文本保存格式:

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

(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 shelvef=shelve.open(‘shelvetest‘) #创建文件f[‘default‘]=1  #写入内容(2)读取文件data=f.get(‘default‘)print(data) #1f[‘default‘]={‘name‘:‘chen‘,‘age‘:21,‘sex‘:‘male‘}data=f.get(‘default‘)print(data)  #{‘name‘: ‘chen‘, ‘age‘: 21, ‘sex‘: ‘male‘}保存格式:

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

3、json模块

(1)写入文件

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

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

 (2)读取文件

f=open(‘json.txt‘,‘r‘)#打开文件data=f.read() #读取文件data=json.loads(data) #反序列化,反简化print(data)

 4、pickle模块(对比json,可以对包括函数和类的对象做序列化)

(1)写入文件

import pickledef add():    print(‘add‘)data=pickle.dumps(add)f=open(‘pickle.txt‘,‘wb‘)  #注意这里写入的是二进制格式,不是明文,这也是与json不同的点f.write(data)f.close()保存格式:

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

(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模块(了解)不同语言或程序之间数据交换的协议