ConfigParser

  ConfigParser包装了配置文件的读取和写入,使得python程序可以更加轻松操作配置文件了。这里的配置文件是指.ini的那种文件,基本格式如下

[section_a]
a_key1 = a_value1
a_key2 = a_value2[section_b]
b_key1 = b_value1
b_key2 = b_value2
b_key3 = b_value3

  将一个文件分隔成几个section,每个section中又有很多键值对,以这样的方式构建起配置文件。

  *每个value在被读进程序的时候都是默认是str变量,所以不用 在配置文件里加引号

  ●  程序用法

import ConfigParsercf = ConfigParser.ConfigParser()
cf.read('路径')  #读取文件,但是即便是没找到也不会报错的,只是返回一个空列表########读配置########
cf.sections()        #返回所有section组成的列表

cf.options('section名字')        #读取某个section中所有的option,如返回['a_key1','a_key2']这样子

cf.items()        #返回[('a_key1','a_value1'),...]这样子

cf.get('section_a','a_key1')        #读取某个value了########写配置########
'''
read某个文件,相当于是把这个文件的内容加载进了内存里,然后可以进行以下的一些操作,把它修改掉
'''
cf.set('section_a','a_key3','a_value3')        #增加一条新纪录,这里键可以写已存在的,那就是更新现有的value值

cf.add_section('section_c')cf.write(open("路径","w"))        #最后,把内存中改完的东西固化到一个文件中去,值得注意的是参数不是路径而是一个文件对象!

  ●  ConfigParser的一些注意点

  第一,ConfigParser对象在使用read方法的时候,如果目标文件不存在,read方法不会报错而是返回一个空列表。所以对于配置文件事先就不存在的情况需要自己剔除并且解决。

  第二,ConfigParser对象内部维护了一个堆栈,而read方法是不断叠加地将配置内容加载到这个堆栈上去的。所以说在遍历读取不同配置的时候,如果有必要记得重新创建一个ConfigParser对象来保存信息。要不然之前被read进来的那些文件的信息会依旧在那里的。

【optparser】

  optparser和ConfigParser并没有什么关系= =。 但是当时在学的时候感觉他们长得挺像的,沿袭了一下之前被单词时的习惯,把长得像的都给归结到一起来。。然后刚好这两个内容又都不多,就写在一篇里吧

  optparser主要为脚本加上命令行参数的支持。一般脚本只有sys.argv那样的命令行参数,而optparser可以有像netstat -ntlp这样的“杠”XX的命令,功能就强大了很多。

  首先还是看下主要怎么用:

  一般,关于optparser的操作都是写在main函数里面,毕竟外界传进来的参数要第一时间解析,才能判断到底要做哪些工作。而这些操作,首先是设置命令行参数:

parser = optparser.OptionParser(usage='Usage:%prog [option]')    #usage参数配置的字符串用于说明这个parser提供的命令行参数的用法。在参数为-h 或者--help的时候打印出相关的字符串。建议添加这个usage

paser.add_option('-t','--test',dest='test_variable',default='default',type='string',help='It is a test option',action='store')
'''
这句话是optparser最重要的设置命令行参数的语句。add_option的几个参数的意义分别是:参数短标识,参数长标识,存放变量名,默认值,存放类型,帮助信息,存放动作。所有参数的值都是字符串。
其中值得一提的是type的默认值就是'string',action一般设成'store'
'''

  在设置完几个参数之后,就可以进行解析了,需要来一句语句:

(options,args) = parser.parse_args()

  之后,所有被传递到脚本的命令行参数都会被存放到options.XXX这个变量里,XXX是什么由之前设置的每个参数的dest决定。比如前面设置过了-t参数,那么命令行-t后面的值会以字符串的形式被存放到options.tset_variable里面,可以供后续程序使用了。

  另外,在设置参数的时候并没有规定哪些参数是必须的,哪些是可选的,哪些可以不要跟值只需要一个-X出现就行等等。这些我没仔细研究过,不过之前我的处理方法是,在解析完成后,用参数值之前,对获得到的所有参数做一个判断。看看是否有自己必须的参数没有传进来,或者值不合法等等,这样来做一个校验。做完校验之后如果发现校验未通过就要抛出错误或者处理错误了。parser对象自带一个error(s)的方法,可以把错误信息s打印到屏幕上提示用户。如果觉得这样处理错误不够用还可以自己写一个OptParser类,重载其中的error,exit等方法。

  ●  如果想要有这个参数出现时表明一个True的情况,并不需要这个参数跟什么值的时候,可以选择的action='store_true'或者'store_false'或者'store_const'。在指定action等于这些值的时候注意不能同时指定type参数,否则会报错。

转载于:https://www.cnblogs.com/franknihao/p/6536594.html

【Python】 配置解析ConfigParser 命令行参数解析optparser相关推荐

  1. python中config命令_【Python】 配置解析ConfigParser 命令行参数解析optparser

    ConfigParser ConfigParser包装了配置文件的读取和写入,使得python程序可以更加轻松操作配置文件了.这里的配置文件是指.ini的那种文件,基本格式如下 [section_a] ...

  2. python getopt使用_Python命令行参数解析模块getopt使用实例

    这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参考下 格式 getopt(args, options ...

  3. linux 参数解析,Linux 命令行参数解析

    在linux中,经常需要各种命令,通常情况下都会带各种参数,而这些参数是如何解析的呢? 通常使用GNU C提供的函数getopt.getopt_long.getopt_long_only函数来解析命令 ...

  4. Python中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  5. Python之命令行参数解析

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  6. Python命令行参数解析模块------argparse

      首先,argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广 ...

  7. 8145v5 参数_Python中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  8. python 命令行参数-Python 中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要一个命令行参数解析的 ...

  9. python命令行参数解析OptionParser类用法实例

    python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下:     from opt ...

最新文章

  1. python中字符串单引号、双引号、三引号_Python:字符串单引号(‘)、双引号(“)、三单引号(”’)和三双引号(“””)的区别...
  2. 5款强大的JVM 性能调优监控工具 !
  3. 【Eclipse 字符集】Eclipse在哪里设置字符集?三个位置,分别控制不同的范围
  4. java for循环 等待_java – 主题:忙等待 – 空循环
  5. 如果面试官问你:Redis 内存满了怎么办?
  6. 【script】python 中文汉字与url的转换
  7. c3p0连接错误 An attempt by a client to checkout a Connection has timed out.
  8. 《剑指offer》——基础数据结构:从简单知识构建细致扎实的思考和实现能力...
  9. OpenCV-Python实战(番外篇)——OpenCV、NumPy和Matplotlib直方图比较
  10. python 数学公式_pythonp_word03公式编辑器,空心方阵公式,高中数学必修一公式,销售利润率公式,高一物理必修1公式...
  11. 基于Web的动态新闻发布系统设计与实现(含word文档)
  12. DM6437(DSP)图像处理常用操作源码
  13. Win10任务栏的隐藏图标的小三角怎么弄出来
  14. 工业元宇宙的价值和发展
  15. matlab最简矩阵,Matlab中,将矩阵A化为行最简阶梯型矩阵,需借助指令:
  16. iPhone十年,移动用户体验领域已经到达成熟阶段
  17. 微信小程序播放m3u8视频总结
  18. 直播软件app开发:如何开发一个可以免费打扑克的直播应用?
  19. oracle的package是什么意思,Oracle的Package的作用及用法
  20. oim-server-web打包测试环境不起作用问题 vue+typeScript

热门文章

  1. 【牛客 - 370B】Rinne Loves Graph(分层图最短路 或 最短路dp)
  2. 【 HDU - 1525 】Euclid's Game(较难找规律,玄学博弈,分析必败点必胜点)
  3. 【POJ - 3169】 Layout(差分约束+spfa)(当板子记?)
  4. ACM竞赛、数论内容常用的定理(求解(a/b)%c,乘法逆元,费马小定理)
  5. android开发百度地图坐标偏差,利用百度地图Android sdk高仿微信发送位置功能及遇到的问题...
  6. lua进入压缩包_使用lua语言制作贪吃蛇游戏(love2d)(一)开发环境的搭建
  7. java工厂模式 uml_深入浅出设计模式-简单工厂模式
  8. python买东西_Python实战之ATM+购物车
  9. 韩顺平 mysql sqlhelper类_(最全)韩顺平jsp购物车源代码(包含数据库)
  10. Hibernate使用原生SQL适应复杂数据查询