相关疑难解决方法(0)

Argparse - 不要用'nargs`捕获位置参数.

我正在尝试编写一个函数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不捕获可选参数的最后一个元素

python argument-passing argparse

14
推荐指数
2
解决办法
4078
查看次数

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)

python command-line-arguments

5
推荐指数
2
解决办法
2095
查看次数