使用argparse
,是否可以在第一个未知参数处停止解析参数?
我找到了两个差不多的解决方案;
parse_known_args
,但这允许在第一个未知参数之后检测已知参数。 nargs=argparse.REMAINDER
,但在第一个非选项参数之前,这不会停止解析。此前任何无法识别的选项都会生成错误。我忽略了什么吗?我应该使用argparse
吗?
答案 0 :(得分:2)
我自己没有使用argparse
(需要保持我的代码2.6兼容),但是通过文档查看,我认为你没有错过任何东西。
所以我不得不想知道为什么你希望argparse
停止解析参数,以及为什么--
伪参数不能完成这项工作。 From the docs:
如果您的位置参数必须以
'-'
开头并且看起来不像负数,则可以插入伪参数'--'
,告诉parse_args()
之后的所有内容都是位置论证:
>>> parser.parse_args(['--', '-f'])
Namespace(foo='-f', one=None)
答案 1 :(得分:0)
一种方法,尽管它可能不是在所有情况下都是完美的,但使用 getopt
代替。
例如:
import sys
import os
from getopt import getopt
flags, args = getopt(sys.argv[1:], 'hk', ['help', 'key='])
for flag, v in flags:
if flag in ['-h', '--help']:
print(USAGE, file=sys.stderr)
os.exit()
elif flag in ['-k', '--key']:
key = v
一旦 getopt
遇到非选项参数,它将停止处理参数。