时间:2021-05-22
运行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=arg elif opt in ("-o","--out"): outputarg=arg print ('输入:'+inputarg) print ('输出:'+outputarg) print ('其他程序参数:'+",".join(args))if __name__=="__main__": main()以上这篇Python编写带选项的命令行程序方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
最近在研究pathon的命令行解析工具,argparse,它是Python标准库中推荐使用的编写命令行程序的工具。以前老是做UI程序,今天试了下命令行程序,感觉
前言什么是命令行程序呢?像我们常见的webpack,vue-cli都属于命令行程序。本文将带你从0开始用node写一个自己的命令行程序,并发布到npm。准备工作
1.获得命令行程序SQLite命令行程序(CLP)是开始使用SQLite的最好选择,按照如下步骤获取CLP:1).打开浏览器进入SQLite主页,www.sql
getopt模块用于抽出命令行选项和参数,也就是sys.argv命令行选项使得程序的参数更加灵活。支持短选项模式和长选项模式例如pythonscriptname
argparse是python标准库里面用来处理命令行参数的库命令行参数分为位置参数和选项参数:位置参数就是程序根据该参数出现的位置来确定的如:[root@op