python optparse模块解析命令行参数的说明及优化

本文详细介绍了解析命令行参数的强大工具optparse模块。通过对比sys.argv,展示了optparse如何简化复杂命令行参数的处理过程,并提供了实用示例代码。

optparse模块解析命令行参数的说明及优化

  一、关于解析命令行参数的方法

  关于“解析命令行参数”的方法我们一般都会用到sys.argv跟optparse模块。关于sys.argv,网上有一篇非常优秀的博客已经介绍的很详细了,大家可以去这里参考:https://www.cnblogs.com/aland-1415/p/6613449.html 

  这里为大家介绍一个比sys.argv更强大的optparse模块。

  这里说一句题外话,点开optparse的源码,第一行注释是这样的:A powerful, extensible, and easy-to-use option parser。是否感受到了作者强有力的......

  说回正题。当我们要利用server与client进行FTP文件传输的时候,在client端往往需要输入诸如 -s 10.10.10.1 -p 9001 这样的信息,当然我们不能控制用户的输入,如果用户随意的输入错误的命令,比如不写IP地址,只是写-s -p 9001,或者只写 -s -p。我们如果还用sys.argv获取参数的话需要做很多麻烦的逻辑判断,这给我们开发程序带来了很大的不便。

  但是如果我们利用optparse会十分便捷的解决这样的问题。

  二、optparse介绍

  2.1 optparse的用法如下:

import optparse
parser = optparse.OptionParser()
parser.add_option("-s", "--server", dest="server", help="ftp server ip_address")
parser.add_option("-P", "--port", type="int", dest="port", help="ftp server port")
parser.add_option("-u", "--username", dest="username", help="username info")
parser.add_option("-p", "--password", dest="password", help="password info")   

  首先import optparse类,然后创建optparse对象parser,再使用add_option()来定义命令行参数,最后使用parse_args()来解析命令行。

  2.2 举例说明:

  我们先新建一个test.py文件,代码如下

 

import optparse

class Wang_opt:

    def __init__(self):
        #初始化
        parser = optparse.OptionParser()
        parser.add_option("-s", "--server", dest="server", help="ftp server ip_address")
        parser.add_option("-P", "--port", type="int", dest="port", help="ftp server port")
        parser.add_option("-u", "--username", dest="username", help="username info")
        parser.add_option("-p", "--password", dest="password", help="password info")
        #解析参数
        self.options, self.args = parser.parse_args()
        print(self.options,self.args)


if __name__ == '__main__':
    whw_opt = Wang_opt()

 

   然后在test.py文件的目录下运行python test.py,后面不跟任何参数,看看效果:

  运行的结果一个是”字典”,里面存放的是我们需要的信息,后面有一个“空列表”,我们再试试加上符合条件的参数以及不符合条件的参数:

 

  这就说明,”字典”中存放的是我们需要的信息,如果用户没有输入默认设置为None;而“列表”’中存放的是“错误”信息。再返回头看看源代码,其实这个”字典”就是上面的self.options变量,“列表”就是self.args。optparse模块解析的结果就是“我们想得到的信息”以及“用户误操作的输入信息”——的确很强大!

  当然,如果用户不知道他需要输入什么命令,我们可以在后面输入 -h,寻求帮助:

  其实大家可以对照着源代码,这些信息的关键字都是我们在add_option()方法中设置的——嗯,确实~A powerful, extensible, and easy-to-use option parser

  三、重点说明

  3.1 关于得到的“字典”与“列表”的说明:

  其实我们解析得到的参数self.options与 self.args并不是真正意义上的字典与列表,只是“字典与列表的形象”而已!实际上,这两个参数是“对象”,我们可以进行如下验证:在程序最后打印:

print(whw_opt.options.server)

  我们可以看到:用操作符‘.’可以取得server的值 0.0.0.0。

  但是,我们如果利用字典的key-value的取值方式会报错:

  3.2 一个小优化:

  当然,再厉害的工具也必然会有缺点。如果要求用户必须有输入的话,我们可以这样来优化一下程序:

 

import optparse

class Wang_opt:

    def __init__(self):
        #初始化
        parser = optparse.OptionParser()
        parser.add_option("-s", "--server", dest="server", help="ftp server ip_address")
        parser.add_option("-P", "--port", type="int", dest="port", help="ftp server port")
        parser.add_option("-u", "--username", dest="username", help="username info")
        parser.add_option("-p", "--password", dest="password", help="password info")
        #解析参数
        self.options, self.args = parser.parse_args()
        print(self.options,self.args)

    def verification(self):
        if not self.options.server or not self.options.port:
            exit('ERROR!must support server and port parameters!')


if __name__ == '__main__':
    whw_opt = Wang_opt()
    whw_opt.verification()

 

  效果如下:

 

内容概要:本文针对高比例清洁能源接入背景下配电网重构的关键问题,结合需求响应机制开展深入研究,以IEEE33节点标准系统为算例,采用Matlab进行建模与仿真分析。研究充分考虑风电、光伏等分布式电源出力的不确定性特征以及需求侧响应对系统运行的影响,构建了以降低网络损耗、改善电压质量、提升清洁能源消纳能力为目标的优化模型。通过引入智能优化算法求解网络中最优的开关操作策略,实现配电网拓扑结构的动态重构,并通过仿真结果验证了所提方法在增强系统灵活性、可靠性和经济性方面的有效性与优越性。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力,从事新能源并网、智能配电网、需求响应、分布式能源管理等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于高渗透率可再生能源接入的主动配电网运行优化;②支撑需求响应机制下电网灵活性资源的协同调控研究;③为现代低碳、高效、自愈型智能配电网的规划与运行提供技术路径与决策支持。; 阅读建议:建议读者结合文中提供的Matlab代码与IEEE33节点系统参数进行实践复现,深入掌握配电网重构的数学建模方法、约束处理技巧及智能算法求解流程,同时可进一步拓展至多目标优化、不确定性建模(如鲁棒优化、分布鲁棒优化)及动态重构等前沿方向的研究。
内容概要:本文研究了基于条件风险价值(CVaR)的虚拟电厂与电动汽车集群之间的主从博弈优化调度问题,旨在应对电力系统中可再生能源出力与负荷需求的不确定性。通过构建主从博弈模型,将虚拟电厂作为领导者制定电价策略,电动汽车集群作为跟随者响应调度指令,结合CVaR方法量化不同风险偏好的决策行为,有效提升了系统在极端场景下的鲁棒性与经济性。研究采用Matlab进行模型编程与仿真,实现了对多主体互动行为的优化调度,并通过算例验证了所提出模型在降低运行成本、提高新能源消纳能力以及增强风险管控方面的优越性能。该方法为高比例可再生能源接入背景下电力系统的协调运行提供了理论支持和技术路径。; 适合人群:具备一定电力系统、优化理论及博弈论基础知识,从事能源互联网、综合能源系统、电动汽车调度等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于虚拟电厂参与电力市场环境下的定价与调度决策;②指导大规模电动汽车集群在不确定性条件下的有序充放电管理;③为含高比例可再生能源的电力系统提供风险规避型优化调度方案。; 阅读建议:学习者应掌握Matlab编程基础,熟悉YALMIP+CPLEX等优化工具箱的使用,结合文中模型结构与代码实现,重点理解主从博弈的建模逻辑、CVaR的风险刻画机制以及多目标优化的求解流程,建议自行复现算例以加深理解。
内容概要:本文针对2MW大功率虚拟同步发电机(VSG)的惯量与阻尼特性,开展并网逆变系统的Simulink仿真研究,系统构建了VSG的核心控制模型,深入分析其在并网过程中的动态响应特性、系统稳定性以及对电网惯性和阻尼支撑能力的作用机制。研究通过仿真手段验证了VSG有效模拟传统同步发电机机械动态特性的可行性,重点探讨了惯量、阻尼等关键控制参数对系统暂态性能和抗扰动能力的影响规律,旨在为提升高比例新能源接入背景下电力系统的频率稳定性和电压支撑能力提供有效的技术路径与仿真依据。; 适合人群:具备电力电子、电力系统分析及自动控制理论基础,从事新能源并网技术、微电网控制、虚拟同步机(VSG/VSM)等领域研究的研究生、科研人员及电力系统相关工程技术人员。; 使用场景及目标:①深入理解虚拟同步发电机模拟传统同步机转动惯量与阻尼的物理机理与数学建模方法;②掌握利用Simulink搭建VSG并网逆变器详细仿真模型的关键技术;③通过仿真分析惯量和阻尼系数对系统动态响应(如频率波动、功率振荡)的影响,实现控制器参数的优化设计;④为解决弱电网条件下新能源并网的稳定性问题提供仿真验证平台和技术参考。; 阅读建议:学习者应熟练掌握Simulink/Matlab仿真环境,建议结合文中所述的VSG控制策略与系统拓扑结构,动手复现完整的仿真模型,并通过设置不同工况(如负载突变、电网电压波动)和调整控制参数,对比观察系统响应曲线,从而深刻理解VSG的控制特性、优势及其在现代电力系统中的应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值