如何为argparse定义分隔符?

问题描述 投票:0回答:1

Python 的

argparse
模块是解析脚本命令行参数的强大工具。问题是它希望参数之间用空格分隔。有没有办法让
argparse
知道我正在使用逗号分隔的参数列表而不是空格分隔的参数列表,特别是对于位置参数?

例如:

$ python3 myscr.py --arg1 1 --arg2 2 3,4

在此示例中,

3
4
是两个必需的位置参数,以逗号分隔,但解析器会将它们作为单个位置参数获取,并且可能会因缺少第二个参数而引发错误。

parse_args()
方法的帮助说明它需要解析一个字符串列表,如果没有提供,则默认使用
sys.args
。因此,解决方法可能是在调用
sys.args
之前预先解析
parse_args()
。但这需要显式扩展列表并确保不要拆分引号内给出的逗号分隔子字符串等。

python python-3.x command-line-arguments argparse
1个回答
0
投票
> 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),你也可以随时编写自己的解析器。大多数时候你需要自己做一些工作;)

© www.soinside.com 2019 - 2024. All rights reserved.