Python编写带选项的命令行程序方法
Python  /  管理员 发布于 7年前   159
运行python程序时,有时需要在命令行传入一些参数。常见的方式是在执行时,在脚本名后直接追加空格分隔的参数列表(例如 python test.py arg0 arg1 arg2),然后在脚本中就可以通过sys.argv获取所有的命令行参数。
这种方式的优点是传参方便,参数获取简单;缺点是执行脚本时,必须知道参数的顺序,并且不能设置默认值,所有参数每次都必须传入。
还有一种命令行传参方式是通过带选项的方式进行传参(例如python test.py -p0=arg0 -p1=arg1)。
这种方式的优点是参数不用按照固定的顺序传入,并且对于有默认值的参数,可以不传参数直接使用默认值;缺点是传入参数时需要额外加上选项。
对于带选项的命令行参数,可以通过python自带的getopt模块来进行解析。
主要方法:
getopt(args, shortopts, longopts = []):解析命令行选项和参数列表。
args是不包括运行程序引用的参数列表,通常来说就是sys.args[1:]。
shortopts是脚本要识别的短选项字母,如果短选项需要参数,需要在字母后加冒号“:”。
longopts是支持的长选项,是一个长选项名称的列表。选项名称不包括“-”。需要参数的长选项,需要在后面加一个等号“=”。
返回值包括两个列表:第一个列表中是(选项,值),如果选项没有参数,值为空字符串。第二个列表是剥离选项之后的程序参数列表。长项前用“--”,短项前用“-”。
另外要注意的是当进行命令行参数解析时,如果遇到了非选项的参数时,就会停止带选项参数的解析。
简单示例
#!/usr/bin/python# -*- coding: gbk -*-import sysimport getoptdef printUsage():print ('''usage: test.py -i <input> -o <output> test.py --in=<input> --out=<output>''') def main():inputarg=""outputarg=""try:opts, args = getopt.getopt(sys.argv[1:],"hi:o:",["in=","out="])except getopt.GetoptError:printUsage()sys.exit(-1)for opt,arg in opts:if opt == '-h':printUsage()elif opt in ("-i", "--in"):inputarg=argelif opt in ("-o","--out"):outputarg=argprint ('输入:'+inputarg)print ('输出:'+outputarg)print ('其他程序参数:'+",".join(args))if __name__=="__main__":main()
以上这篇Python编写带选项的命令行程序方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号