我在这里简化了我的问题。我需要这样做:
python test.py --arg1 '--no-route53'
我添加了这样的解析器:
parser.add_argument("--arg1", nargs="?", type=str, help="option")
args = parser.parse_args()
我想把'--no-route53'作为整个字符串,稍后在我的脚本中使用它。但我一直收到这个错误:
test.py: error: unrecognized arguments: --no-route53
我该如何解决它?
UPDATE1:如果我在'--no-route53'之后给出额外的空格,就像这样,它起作用了:
python test.py --arg1 '--no-route53 '
答案 0 :(得分:0)
我刚才有同样的问题。我最终预解析了sys.argv
列表:
def bug_workaround(argv):
# arg needs to be prepended by space in order to not be interpreted as
# an option
add_space = False
args = []
for arg in argv[1:]: # Skip argv[0] as that should not be passed to parse_args
if add_space:
arg = " " + arg
add_space = True if arg == "--args" else False
args.append(arg)
return args
parser = argparse.ArgumentParser(description='My progrm.')
.
.
.
parser.add_argument('--args', type=str,
help='Extra args (in "quotes")')
args = parser.parse_args(bug_workaround(sys.argv))
# Prune added whitespace (for bug workaround)
if args.args:
args.args = args.args[1:]