• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > ConfigParser写配置文件乱序问题

ConfigParser写配置文件乱序问题

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了configparser,python configparser,python中configparser,python3 configparser,import configparser等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

ConfigParser写配置文件乱序问题


在Centos6.5的环境下,通常使用ConfigParser进行配置文件的解析。Centos6.5的Python版本为Python 2.6.6。

对于一般的应用场景中配置文件的顺序没有那么的重要,但有些场景中配置文件的顺序是非常有效的,特别是当配置项的值具有覆盖功能时这种问题更加的严重。

以下面的例子为例进行说明:
  1. [b]
  2. y1 = 10
  3. x2 = 20
  4. z1 = 30
  5. [a]
  6. x2 = 40
  7. z2 = 10
  8. y1 = 10
在Centos 6.5常用的配置文件解析方法如下:
[root@stcell03 test]# python
Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ConfigParser
>>> config = ConfigParser.ConfigParser()
>>> fp = open(r"/root/test/test.conf", "r")
>>> config.readfp(fp)
>>> sections = config.sections()
>>> print sections
['a', 'b']
>>>
具体代码如下所示
  1. import ConfigParser
  2. config = ConfigParser.ConfigParser()
  3. fp = open(r"/root/test/ceph.conf", "r")
  4. config.readfp(fp)
  5. sections = config.sections()
  6. print sections
通过上述的输出可知,配置文件的section顺序为b, a,而实际输出的section为a, b。对于一般场景下无所谓,但在包含的场景中,比如b是一个通用的配置,而a是一个特殊的配置,a的配置能够覆盖b中某些配置项的内容,此时就会出现问题。出现这种问题的根本原因是在ConfigParser中默认采用了dict保存解析到的数据,而dict本身是无序的,实际上是根据键值的顺序保存,因此出现了a,b的顺序。这样也就可能导致配置文件的乱序。

实际上根据官方的文档可知,可以设置ConfigParser的dict_type参数,改变对应的字典类型,从而解决这种序列问题。Changedinversion2.6:dict_typewasadded.
Changedinversion2.7:Thedefaultdict_typeiscollections.OrderedDict.allow_no_valuewasadded.经过测试在Python 2.7的版本中,配置文件不会出现乱序问题,因此可以在Python 2.6的版本中传递2.7的参数。如下所示:
[root@stcell03 test]# python
Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ConfigParser
>>> from collections import OrderedDict
>>> config = ConfigParser.ConfigParser(dict_type=OrderedDict)
>>> fp = open(r"/root/test/test.conf", "r")
>>> config.readfp(fp)
>>> sections = config.sections()
>>> print sections
['b', 'a']
>>>
具体代码如下:
  1. import ConfigParser
  2. from collections import OrderedDict
  3. config = ConfigParser.ConfigParser(dict_type=OrderedDict)
  4. fp = open(r"/root/test/test.conf", "r")
  5. config.readfp(fp)
  6. sections = config.sections()
  7. print sections


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ConfigParser写配置文件乱序问题

相关文章

  • 2017-07-23Activity、View、Window三者之间的关系
  • 2017-09-18android图文混排布局错乱
  • 2017-05-26测试经验总结之--测试员的角色
  • 2017-05-26Android多分辨率适配实践【1】使用字体图标(内含两枚神器),android两枚
  • 2017-05-26绘制视图,根据轴测图绘制三视图
  • 2017-05-26WebView的基本使用,WebView使用
  • 2017-05-26Android中使用开源框架PagerSlidingTabStrip实现导航标题,android开源框架
  • 2017-05-26认清Android Studio下的Gradle是什么
  • 2017-05-26Android Studio项目提交到GitHub,androidgithub
  • 2017-05-26MaterialRefreshLayout,swiperefreshlayout

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 应用被强杀了怎么办,应用被强杀
    • andriod 图片选择器,
    • 《转》深入理解Activity启动流程(一)–Activity启动的概要流程,《转》activity
    • linux设备驱动程序之时钟管理(2)----又见结构
    • android开发之路09(浅谈SQLite数据库01),androidsqlite
    • Android仿ios底部弹出框效果,android仿ios底部
    • Android合并两个APP的具体做法(掌握)
    • AndroidUSB转串口通信开发基本流程
    • Android接入微信支付完全解析,太全了~
    • 几个常用的adb命令,常用adb命令

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有