• 保存数据到文件的模块(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)创建:

      



  • 相关阅读:
    pycharm 快捷键
    jquery .on
    javaweb项目的优化
    python笔记
    git上解决代码冲突(merge版)
    OpenERP里面继承的用法
    OpenERP新手易犯错误之res.model
    bootstrap 仿实例
    深入理解Binder(二),Binder是什么?
    深入理解Binder(一),从AIDL谈起
  • 原文地址:https://www.cnblogs.com/chenxiaozan/p/12169171.html
Copyright © 2020-2023  润新知