python中config命令_【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变量,所以不用 在配置文件里加引号

●  程序用法

importConfigParser

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

●  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参数,否则会报错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sata接口测试软件,如何查看电脑是否支持USB 3.0?Hwinfo32检测SATA端口的方法

Hwinfo32检测SATA端口有很多效用,其中我们查看该SATA是否支持USB 3.0就是一个判断,更多的信息是为了了解SATA目前已经可使用的和在使用的端口情况,具体方法可以查看下文中的方法进行判断。Hwinfo32检测SATA端口的方法:1、直接下载…

python中deepcopy函数_Python学习笔记函数之copy()和deepcopy()

随笔记录方便自己和同路人查阅。#------------------------------------------------我是可耻的分割线-------------------------------------------在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,你…

常规计算机 符号键是,电脑键盘上的字母和符号都表示什么

键盘上的键可以根据功能划分为几个组:键入(字母数字)键。这些键包括与传统打字机上相同的字母、数字、标点符号和符号键。控制键。这些键可单独使用或者与其他键组合使用来执行某些操作。最常用的控制键是 Ctrl、Alt、Windows 徽标键 和 Esc。功能键。功能键用于执行…

mfc try catch 捕获并显示_你的异常捕获够优雅不?求你别只会try{...} catch{...}了

文章来源 | cnblogs.com/jurendage/p/11255197.html作者 | 巨人大哥软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} fin…

vue 修改对象的值视图没有发生改变_在vue中处理对象属性改变视图不更新问题? - echart...

...图等等,但是这些代码比较难写,因此我们通常会用借助echarts,那你知道如何使用echarts吗?这篇文章就和大家讲讲echarts的使用方法,有一定的参考价值,感兴趣的朋友可以看看。以饼状图为例,介绍…

五年级计算机教材内容,五年级计算机教学计划

五年级计算机教学计划教育结构不断发生变革,现代教育和教学理论主张对教学计划的结构实行改革。下面是小编为您整理的关于五年级计算机教学计划的相关资料,欢迎阅读!五年级计算机教学计划 范例1一、教材分析选用的教材是,浙江摄影…

linux添加用户命令_为Linux的cp和mv命令添加进度条

cp和mv可能是大家日常中使用最多的Linux命令之一。但是有一个突出的问题是这两个命令都不会有任何提示信息,这在操作大文件时候只能干等。可能大家对此已经习以为常,但是其实上也有解决解决方法,本文我们就介绍一个Gnu Coreutils(cp和mv的源代…

date time 分开存储如何合并_关于TDateTime的TDate与TTime合并的问题 | 菲菲的家

遇到TDate与TTime合并为TDateTime的问题,想想应该很容易,没想到发现一个百思不得其解的问题,在这里跟大家分享并求教。比如有两个组件DateTimePicker1和DateTimePicker2,Kind属性分别为dtkDate和dtkTime,一个用来定义T…

unsigned long long 溢出 乘_Java整数相加溢出怎么办?Java8一步搞定

问题在之前刷题的时候遇见一个问题,需要解决int相加后怎么判断是否溢出,如果溢出就返回Integer.MAX_VALUE解决方案JDK8已经帮我们实现了Math下,不得不说这个方法是在StackOverflow找到了的,确实比国内一些论坛好多了~加法public s…

计算机模块word2003和2007,以Word2003的名义熟悉Word2007

相信很多朋友都已经用上了最新的Office2007办公套件,Office2007提供了全新的外观、全新的用户界面,用简单明了的单一机制取代了早期版本中的菜单、工具栏和大部分的任务窗格,从而使用户可以更高效、更容易地找到完成各种任务的合适功能&#…

golang python rpc_golang rpc的两种调用方法

golang的rpc有两种方法进行调用,一种是rpc例子中给的:package mainimport ("net/rpc""net/http""log""net""time")type Args struct {A, B int}type Arith intfunc (t *Arith) Multiply(args *Args, …

二级计算机vf里的sql,计算机等级考试二级VF考点:SQL语言

第4章SQL语言(数据查询)一、投影:SELECT 字段 FROM 表名题目:1. 对职工表进行查询,显示职工的职工号。2. 对职工表进行查询,显示所有信息(即所有字段)。二、选择:SELECT 字段 FROM 表名 WHERE 条件题目:3. …

setstate是同步还是异步_谈谈 IO模型:同步、异步、阻塞、非阻塞

同步/异步、阻塞/非阻塞 说的是一回事儿吗?同步/异步、阻塞/非阻塞 你能通俗易懂的讲清楚吗?Java 中的 BIO、NIO、AIO 你了解吗?Socket 编程你还会吗?Linux 操作系统的 IO 模型你能讲讲吗?01. 生活中的同步/异步、阻塞…

tp获取referer里的域名_thinkPHP的redirect跳转和referer使用的问题

如果从Topic/topic页面跳转到Login/login页面 使用$_SERVER[HTTP_REFERER]后再login页面出来的地址是这样的http://localhost/a/jz/index.php/Home/topic/topic,这个地址没错,为什么我使用redirect跳转后地址栏上的地址就变成了这样http://localhost/a/j…

软件测试要求太高,软件“故障门”频现 对软件测试提出更高要求

随着信息化时代的到来,各行各业已离不开各类应用软件,可是频频爆出的软件“故障门”却成为企业发展的“拦路虎”。为了解决“故障门”,众多IT企业不得不加大软件测试领域的投入,有的试图培养高水平的测试团队,有的则希…

md5会重复吗_如何优雅地处理重复请求(并发请求)

点击上方“服务端思维”,选择“设为星标”回复”669“获取独家整理的精选资料集回复”加群“加入全国服务端高端社群「后端圈」利用唯一请求编号去重你可能会想到的是,只要请求有唯一的请求编号,那么就能借用Redis做这个去重——只要这个唯一…

初学者选黑卡还是微单_3500以内的微单相机好用吗?值得初学者入手吗?

2000--3000元的相机还是有一定使用价值的,如果你是拿来学习摄影,这些相机还是足够用的。我们按照京东自营的价格,来搜一下3500块钱以内的微单无反相机,看看有哪些值得入手的。索尼ILCE6000套机今年最低价3198佳能EOS M6一代套机今…

计算机二级excel数据有效性,原来Excel数据有效性还可以这样做——制作二级下拉菜单...

很多时候,在进行设置数据有效性时,我们希望可以根据前一单元格的内容,使用动态的数据选项。如下图为一个员工信息表,现希望在F列制作下拉列表,下拉列表的内容根据E列输入的省份变化而变化,如在E2单元格中输…

python 模块 包 库_模块(包、库)

模块的基本概念:模块是程序,它就是一个扩展名为.py的python程序。因此对于一个.py的python文件而言,既可以把它当作程序来执行,也可以将它作为模块引入。导入一个模块时,python解释器会先自动在当前路径下搜索要导入的…

计算机网络课设题目java_java课程设计参考题目

参考题目选题原则:所完成的系统应能够在生活、学习中使用,以实用性为主。模仿生活、学习中使用到的各种软件,做mini版本。开发的目标是自己、同学愿意使用你所开发的软件完成一些简单任务。从小功能着手,一点点的添加功能。添加一…