我正在尝试编写一个函数wo,你可以通过argparse解析可变数量的参数 - 我知道我可以通过这个来做nargs="+".遗憾的是,argparse帮助的工作方式(以及人们通常在CLI中编写参数的方式)将位置参数放在最后.这导致我的位置参数被捕获为可选参数的一部分.
#!/usr/bin/python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("positional", help="my positional arg", type=int)
parser.add_argument("-o", "--optional", help="my optional arg", nargs='+', type=float)
args = parser.parse_args()
print args.positional, args.optional
Run Code Online (Sandbox Code Playgroud)
运行此以./test.py -h显示以下使用说明:
usage: test.py [-h] [-o OPTIONAL [OPTIONAL ...]] positional
Run Code Online (Sandbox Code Playgroud)
但如果我跑./test.py -o 0.21 0.11 0.33 0.13 100了就给我
test.py: error: too few arguments
Run Code Online (Sandbox Code Playgroud)
为了正确解析args,我必须运行 ./test.py 100 -o 0.21 0.11 0.33 0.13
那么我该怎么做:
make argparse重新格式化使用输出,以免误导,或者甚至更好:
-o如果它是列表中的最后一个,则告诉argparse不捕获可选参数的最后一个元素
?
我正在使用argparse从命令行接收输入来运行我的脚本。
我当前的输入字符串如下所示:
path> python <\filename\\> -t T1 T2 T3 -f F1 F2
Run Code Online (Sandbox Code Playgroud)
argparse 中是否有一个参数,而不是按空格分隔输入,我可以用逗号分隔它们?
换句话说:
path> python <\filename\\> -t T1,T2,T3 -f F1,F2
Run Code Online (Sandbox Code Playgroud)