运行脚本时经常需要传入参数来控制脚本的行为,本文记录在脚本种如何处理命令行传入的参数。
### 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
~~~
- Linux
- bash常见的命令汇总
- 切换用户登陆到bash时的目录
- grep匹配tab
- gperftools的使用
- Hyper-V安装Linux
- ubuntu on windows 忘记密码怎么办
- 修改用户默认shell
- ubuntu 安装pip
- Arch Linux安装记录
- Hyper-V中安装Linux的一些问题
- ASR
- 数据集
- PCM音频文件
- One-Pass算法
- CHiME5环境配置中遇到的一些问题
- Python
- 命令行参数解析
- 三目运算符
- Numpy
- 练习1
- 练习2
- Others
- GNU make 的用法
- pandoc
- Git
- PowerShell
- 花括号的作用
- 一条命令在多行内输入
- Tex
- Latex基础知识
- tikz库
- CTex使用中的一些问题
- C++
- 标准库list
- 数据结构
- kdtree