python-命令行参数
在我们写 Python 脚本时,有时候如果能从命令行读取参数,那就减少了我们在源代码里直接指定某些参数的情况,从而减少我们对代码的反复修改。但是解析命令行参数这工具,我已经忘了好多次了,因此做个笔记记录下。读取命令行参数的模块包括 sys, argparser
等
sys
该模块比较简单,用一个示例即可说明了。
import sys
# 参数个数
len(sys.argv)
# 脚本名
sys.argv[0]
# 命令行参数参数, `i>0`
sys.argv[i]
argparser
在学习 argparser
之前需要分清位置参数和可选参数,比如 mv src dst
指令中的 src
和 dst
就是位置参数,程序如何处理他们和他们的位置是相关的。而可选参数则形如 ls -l
中的 -l
,这个参数会导致信息更详细的信息。[^1]
首先需要导入这个模块 import argparse
,然后实例化我们的 parser=argparse.ArgumentParser
add_argument:我们使用这个方法指定程序接受的命令行选项
- 位置参数
# 添加一个名字叫 `my_arg` 的命令行选项
parser.add_argument('my_arg')
args = parser.parse_args()
# 捕获到的参数可以通过 `args.my_arg` 获取,并通过 `type` 指定参数类型
args = parser.add_argument('my_arg', help='additional information here', type=int)
- 可选参数
同样的我们也能指定可选参数
# 用 `--` 来提示这是一个可选参数
parser.add_argument('--option')
args = parser.parse_args()
# 通过 `args.option` 来获取可选参数的值
一些注意事项:
- 可选参数未被指定时,可选参数被赋值为
None
- 使用可选参数时,必须为其指定一个值
如果我们可选参数只想捕获真值,我们可以设置一个参数来达到使用参数则为真,不使用参数则为假的效果,此时不需要我们在命令行中为可选参数中指定真值了。具体的做法如下
parser.add_argument('--option', action="store_true")
不过使用了这种做法后,就不能再给可选参数赋值了。然后我们还可以添加这个命令的短版本
parser.add_argument('-o', '--option', action='store_true')
不过这里的短命令最好使用一个 -
了,因为经过测试可以发现,解析出的可选参数名字是 add_argument
中的第一个 --
后的名字
References
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruoy's Blog!
评论