Python解析命令行参数的两种方法:sys.argv与getopt详解
本文介绍Python中获取命令行参数的两种常用方法。首先演示使用sys模块直接遍历sys.argv列表以处理独立参数;随后深入讲解利用getopt模块解析组合参数(如-t mytest)的用法,包括短选项与长选项的定义及返回值处理,并提供完整示例代码供参考。
(一)单一独立的参数
若命令行输入的参数均为独立且单一的形式,可通过循环逐一读取所有参数。在sys模块中,直接调用args = sys.argv即可获取全部参数(返回值args为list类型)。其中,args[0]表示正在执行的Python文件路径,而args[1:]之后的内容才是实际传入的命令行参数。借助for循环即可遍历读取args列表,具体示例代码如下:
import sys def usage(): print """ This is usage. This is usage. This is usage. """ def main(argv): for arg in argv[1:]: if arg == '-t': pass elif arg == '-h' or arg == '--help': usage() sys.exit() elif arg == '-p': pass else: print "Error: invalid parameters" sys.exit() if __name__ == '__main__': main(sys.argv)
(二)参数结合
当需要读取如-t mytest这类组合参数时,前述方法将不再适用。在Shell环境中可通过shift命令移动至下一个参数,但Python未提供类似功能,因此需采用其他处理方式。
一种解决方案是使用getopt模块(关于getopt的官方文档解释:点击打开链接)。该模块中的getopt函数允许指定参数的可能类型,并能够获取所有参数。
用法:
getopt.getopt(args, options[, long_options])
options参数用于指定短格式输入,即单横杠"-",例如"-h";long_options为可选参数,用于指定长格式输入,即双横杠"--",例如"--help"。若为单一参数输入,options和long_options仅需直接写入参数名即可。例如以下代码指定了两个单一参数:-h/--help与-t/--test:
opts, args = getopt.getopt(sys.argv[1:], 'ht', ['help', 'test''])
若参数后需继续接收后续值,则在options的参数名后添加冒号":",在long_options的参数名后添加等号"="。例如以下代码指定了三个参数:-h/--help、-t/--test以及-r path / --root path:
opts, args = getopt.getopt(sys.argv[1:], 'htr:', ['help', 'test','root='])
getopt函数的返回值包含两个元素,通常只需关注第一个。如下代码所示,第一个返回值opts为"is a list of (option, value) pairs",即形如-t mytest的元素对。当然,若-t后无需接参,则不存在value值。利用该pairs返回值,可通过for循环获取参数,无论是单一独立参数还是结合参数均适用,具体示例代码如下:
import sys import getopt def usage(): print """ This is usage. This is usage. This is usage. """ def main(argv): try: opts, args = getopt.getopt(sys.argv[1:], 'm:p:h', ['miner=', 'params=', 'help']) except getopt.GetoptError: usage() sys.exit() for opt, arg in opts: if opt in ['-h', '--help']: pass elif opt in ['-t', '--test']: pass elif opt in ['-p', '--path']: param = arg print param sys.exit() else: print "Error: invalid parameters" usage() sys.exit() if __name__ == '__main__': main(sys.argv)
此外,还有一个知识点:若需打印一大段字符串,可使用三个双引号包裹。如上述代码中的usage函数所示,需注意三双引号内的内容无需缩进,必须从行首开始书写,否则会导致错误。
以上关于Python获取命令行输入参数列表的实例代码即为分享的全部内容,希望能为大家提供参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













