ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
运行脚本时经常需要传入参数来控制脚本的行为,本文记录在脚本种如何处理命令行传入的参数。 ### sys模块 python的`sys`模块的`argv`存储了所有的命令行参数,其中,第一个参数`argv[0]`是脚本名称,其余参数也可以通过`argv`访问。 ### getopt模块 我们经常看到如下格式的命令,`command -i -o optv param`,这类命令可以通过getopt模块的getopt方法来处理。 ~~~python opts,argv=getopt.getopt(argv,"io:",[]) ~~~ 上述方法的`argv`参数是参数列表;**第二个参数是短格式选项的模式串,选项字母后如果有`:`则表示选项后必须跟一个值,否则表示这是一个开关选项,例如-i就是一个开关选项,-o后必须跟参数值**;`[]`可以用来支持长选项格式,但是本文不作介绍。**返回值的`opts`是由一些分析出来的tuple组成的列表,`argv`是剩余的参数。** 1. 由于**getopt方法在分析到第一个非模式串的时候就会停止分析**,所以选项部分必须写在`argv`的前面,而`sys.argv`一般含有脚本名,**传入`argv`的时候一般写作`sys.argv[1:]`**。 2. 使用`getopt`处理的脚本要求在命令行输入参数的时候,选项部分必须在前面书写。 只有满足以上两个条件,脚本才能正确地解析传入的参数。 `getopt`方法的一段使用范例如下: ~~~python try: opts,args=getopt.getopt(sys.argv[1:],"b:e:",[]) except: sys.stderr.write("can not parse the params") exit(0) finally: pass for opt,val in opts: if opt == '-b': begin_time=val end_time=val+120 elif opt=='-e': end_time=val ~~~