Python 的
argparse
模块是解析脚本命令行参数的强大工具。问题是它希望参数之间用空格分隔。有没有办法让argparse
知道我正在使用逗号分隔的参数列表而不是空格分隔的参数列表,特别是对于位置参数?
例如:
$ python3 myscr.py --arg1 1 --arg2 2 3,4
在此示例中,
3
和4
是两个必需的位置参数,以逗号分隔,但解析器会将它们作为单个位置参数获取,并且可能会因缺少第二个参数而引发错误。
parse_args()
方法的帮助说明它需要解析一个字符串列表,如果没有提供,则默认使用sys.args
。因此,解决方法可能是在调用 sys.args
之前预先解析 parse_args()
。但这需要显式扩展列表并确保不要拆分引号内给出的逗号分隔子字符串等。
> python test.py --count 5,4
['5', '4']
> cat test.py
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--count')
val = parser.parse_args().count
your_list = val.split(',')
print(your_list)
不要太依赖你的库,如果你的输入变得更奇怪(使用 sys.argv),你也可以随时编写自己的解析器。大多数时候你需要自己做一些工作;)