首页 > 代码库 > 【Python】 配置解析ConfigParser & 命令行参数解析optparser

【Python】 配置解析ConfigParser & 命令行参数解析optparser

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 ConfigParser

cf = 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"))        #最后,把内存中改完的东西固化到一个文件中去,值得注意的是参数不是路径而是一个文件对象!

 

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出现就行等等。这些我没仔细研究过,不过之前我的处理方法是,在解析完成后,用参数值之前,对获得到的所有参数做一个判断。看看是否有自己必须的参数没有传进来,或者值不合法等等,这样来做一个校验。

【Python】 配置解析ConfigParser & 命令行参数解析optparser