
正文
【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 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的时候打印出相关的字符串。建议添加这个usagepaser.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参数,否则会报错。
【Python】 配置解析ConfigParser & 命令行参数解析optparser的更多相关文章- $命令行参数解析模块argparse的用法
argparse是python内置的命令行参数解析模块,可以用来为程序配置功能丰富的命令行参数,方便使用,本文总结一下其基本用法. 测试脚本 把以下脚本存在argtest.py文件中: # codin ...
- python命令行参数解析模块argparse和docopt
http://blog.csdn.net/pipisorry/article/details/53046471 还有其他两个模块实现这一功能,getopt(等同于C语言中的getopt())和弃用的o ...
- Python命令行参数解析模块getopt使用实例
Python命令行参数解析模块getopt使用实例 这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参 ...
- python命令行参数解析OptionParser类用法实例
python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下: from opt ...
- Python 中命令行参数解析工具 docopt 安装和应用
什么是 docopt? 1.docopt 是一种 Python 编写的命令行执行脚本的交互语言. 它是一种语言! 它是一种语言! 它是一种语言! 2.使用这种语言可以在自己的脚本中,添加一些规则限制. ...
- gflags命令行参数解析
gflags库是google开源的命令行参数解析工具. 安装 官方没有提供二进制库,但是Debian/Ubuntu平台本身提供了二进制库,可以直接git clone https://github.co ...
- GO语言标准库—命令行参数解析FLAG
flag包是Go语言标准库提供用来解析命令行参数的包,使得开发命令行工具更为简单 常用方法 1.flag.Usage 输出使用方法,如linux下ls -h的帮助输出 2.flag.Type(参数名, ...
- [Go] 命令行参数解析包(flag 包)使用详解
Go 的 flag 包可以解析命令行的参数. 一.命令行语法 命令行语法主要有以下几种形式: cmd -flag // 只支持bool类型 cmd -flag=xxx cmd -flag ...
- Google开源命令行参数解析库gflags
Google开源命令行参数解析库gflags http://blog.csdn.net/lming_08/article/details/25072899 CMDLINE的解析 http://blog ...
随机推荐- centOS 6.4下安装中文输入法
1.用root登录 ,或su root 2.yum install "@Chinese Support" 3.exit 4.回到桌面,system->preferences- ...
- Qt之QProgressIndicator(等待提示框)
简述 很早以前在网上看到一个纯代码实现的旋转动画感觉效果很不错,分享给大家.不得不说,条条大道通罗马,我们需要更多地创造... 详见:QProgressIndicator 简述 效果 源码 使用 更多 ...
- struts2关于package 的 namespace
namespace决定了action的访问路径,默认为"",可以接收所有路径的actionnamespace可以写为/ ,或者/xxx,或者/xxx/yyy,对应的action访问 ...
- bzoj2243 sdoi2011 染色 paint
明明是裸树剖 竟然调了这么久好蛋疼 大概是自己比较水的原因吧 顺便+fastio来gangbang #include<iostream> #include<cstring> # ...
- js浏览器对象navigator
移动端通常需要判断当前设备的类型,比如安卓,ios等.输出浏览器的请求代理,可以判断浏览器类型.js代码如下 判断当前浏览器的请求代理 我是出来玩的! <!DOCTYPE html> &l ...
- qt部件的可视性
- IOS 模拟器多开集成测试和那些坑
#### 前言公司一直没有IOS自动化,搞得很尴尬,个人感觉搞自动测试的,不搞IOS自动化,就像金X,少了重要一点啊.也向领导申请过不止一次,总只都各种原因没有分配机器,不了了之.某天线上IOS出bu ...
- web模拟终端博客系统
本文由QQ音乐前端团队发表 前段时间做了一个非常有意思的模拟终端的展示页:http://ursb.me/terminal/(没有做移动端适配,请在PC端访问),这个页面非常有意思,它可以作为个人博客系 ...
- Linux 用户和用户操作
1,创建组 groupadd test 增加一个test组 2,修改组 groupmod -n test2 test 将test组的名子改成test2 3,删除组 groupdel test2 删除 ...
- 用汇编语言(ARM 32位)编写TCP Bind Shell的菜鸟教程
用汇编语言(ARM 32位)编写TCP Bind Shell的菜鸟教程 来源 https://www.4hou.com/info/news/9959.html Change 新闻 2018年1月19日 ...
argparse是python内置的命令行参数解析模块,可以用来为程序配置功能丰富的命令行参数,方便使用,本文总结一下其基本用法. 测试脚本 把以下脚本存在argtest.py文件中: # codin ...
http://blog.csdn.net/pipisorry/article/details/53046471 还有其他两个模块实现这一功能,getopt(等同于C语言中的getopt())和弃用的o ...
Python命令行参数解析模块getopt使用实例 这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参 ...
python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下: from opt ...
什么是 docopt? 1.docopt 是一种 Python 编写的命令行执行脚本的交互语言. 它是一种语言! 它是一种语言! 它是一种语言! 2.使用这种语言可以在自己的脚本中,添加一些规则限制. ...
gflags库是google开源的命令行参数解析工具. 安装 官方没有提供二进制库,但是Debian/Ubuntu平台本身提供了二进制库,可以直接git clone https://github.co ...
flag包是Go语言标准库提供用来解析命令行参数的包,使得开发命令行工具更为简单 常用方法 1.flag.Usage 输出使用方法,如linux下ls -h的帮助输出 2.flag.Type(参数名, ...
Go 的 flag 包可以解析命令行的参数. 一.命令行语法 命令行语法主要有以下几种形式: cmd -flag // 只支持bool类型 cmd -flag=xxx cmd -flag ...
Google开源命令行参数解析库gflags http://blog.csdn.net/lming_08/article/details/25072899 CMDLINE的解析 http://blog ...
- centOS 6.4下安装中文输入法
1.用root登录 ,或su root 2.yum install "@Chinese Support" 3.exit 4.回到桌面,system->preferences- ...
- Qt之QProgressIndicator(等待提示框)
简述 很早以前在网上看到一个纯代码实现的旋转动画感觉效果很不错,分享给大家.不得不说,条条大道通罗马,我们需要更多地创造... 详见:QProgressIndicator 简述 效果 源码 使用 更多 ...
- struts2关于package 的 namespace
namespace决定了action的访问路径,默认为"",可以接收所有路径的actionnamespace可以写为/ ,或者/xxx,或者/xxx/yyy,对应的action访问 ...
- bzoj2243 sdoi2011 染色 paint
明明是裸树剖 竟然调了这么久好蛋疼 大概是自己比较水的原因吧 顺便+fastio来gangbang #include<iostream> #include<cstring> # ...
- js浏览器对象navigator
移动端通常需要判断当前设备的类型,比如安卓,ios等.输出浏览器的请求代理,可以判断浏览器类型.js代码如下 判断当前浏览器的请求代理 我是出来玩的! <!DOCTYPE html> &l ...
- qt部件的可视性
- IOS 模拟器多开集成测试和那些坑
#### 前言公司一直没有IOS自动化,搞得很尴尬,个人感觉搞自动测试的,不搞IOS自动化,就像金X,少了重要一点啊.也向领导申请过不止一次,总只都各种原因没有分配机器,不了了之.某天线上IOS出bu ...
- web模拟终端博客系统
本文由QQ音乐前端团队发表 前段时间做了一个非常有意思的模拟终端的展示页:http://ursb.me/terminal/(没有做移动端适配,请在PC端访问),这个页面非常有意思,它可以作为个人博客系 ...
- Linux 用户和用户操作
1,创建组 groupadd test 增加一个test组 2,修改组 groupmod -n test2 test 将test组的名子改成test2 3,删除组 groupdel test2 删除 ...
- 用汇编语言(ARM 32位)编写TCP Bind Shell的菜鸟教程
用汇编语言(ARM 32位)编写TCP Bind Shell的菜鸟教程 来源 https://www.4hou.com/info/news/9959.html Change 新闻 2018年1月19日 ...








