argparse 匹配命令行参数和脚本添加的参数之间最接近的参数
argparse is matching to the closest between the command line arguments and arguments added by the script
我在脚本中的 argparse 解析器中添加了一些参数,如下所示:
parser = argparse.ArgumentParser()
parser.add_argument("--eval_model_dir", type=str, default='',
help="Model directory for evaluation.")
parser.add_argument("--evaluate_during_training", action='store_true',
help="Run evaluation during training at each save_steps.")
我是运行命令行脚本如下:
python test.py --eval_ dummy_value
即使从命令行传递的参数 --eval_
与脚本中的参数 --eval_model_dir
不匹配,传递的值 dummy_value
也会分配给 --eval_model_dir
。如果命令行参数是 --eval
,我会收到如下错误消息:
error: ambiguous option: --eval could match --evaluate_during_training, --eval_model_dir
.
根据我对 Argparse official documentation 的阅读,我没有发现它提到命令行参数和脚本参数可能是最接近的匹配。直觉上,我认为需要精确匹配。我有以下问题:
- 这是否匹配argparse的最接近参数特征?如果是这样,请有人指点我查看官方文档。
- 这个匹配的规则是什么?根据我所做的运行,当从左到右读取命令行参数时参数匹配,只能适合脚本中的一个参数。不确定这是否正确或此匹配中是否存在任何极端情况。
- 有没有办法阻止他最接近的匹配?
来自您链接的官方文档:https://docs.python.org/3/library/argparse.html#argument-abbreviations-prefix-matching
请参考Argument abbreviations (prefix matching)
您可以通过将“allow_abbrev”设置为 False
来禁用它
来自文档:
class <a href="https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser" rel="nofollow noreferrer">argparse.ArgumentParser</a>(..., allow_abbrev=True, ...)
...
- allow_abbrev - Allows long options to be abbreviated if the abbreviation is unambiguous. (default:
True
)
我在脚本中的 argparse 解析器中添加了一些参数,如下所示:
parser = argparse.ArgumentParser()
parser.add_argument("--eval_model_dir", type=str, default='',
help="Model directory for evaluation.")
parser.add_argument("--evaluate_during_training", action='store_true',
help="Run evaluation during training at each save_steps.")
我是运行命令行脚本如下:
python test.py --eval_ dummy_value
即使从命令行传递的参数 --eval_
与脚本中的参数 --eval_model_dir
不匹配,传递的值 dummy_value
也会分配给 --eval_model_dir
。如果命令行参数是 --eval
,我会收到如下错误消息:
error: ambiguous option: --eval could match --evaluate_during_training, --eval_model_dir
.
根据我对 Argparse official documentation 的阅读,我没有发现它提到命令行参数和脚本参数可能是最接近的匹配。直觉上,我认为需要精确匹配。我有以下问题:
- 这是否匹配argparse的最接近参数特征?如果是这样,请有人指点我查看官方文档。
- 这个匹配的规则是什么?根据我所做的运行,当从左到右读取命令行参数时参数匹配,只能适合脚本中的一个参数。不确定这是否正确或此匹配中是否存在任何极端情况。
- 有没有办法阻止他最接近的匹配?
来自您链接的官方文档:https://docs.python.org/3/library/argparse.html#argument-abbreviations-prefix-matching
请参考Argument abbreviations (prefix matching) 您可以通过将“allow_abbrev”设置为 False
来禁用它来自文档:
class <a href="https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser" rel="nofollow noreferrer">argparse.ArgumentParser</a>(..., allow_abbrev=True, ...)
...
- allow_abbrev - Allows long options to be abbreviated if the abbreviation is unambiguous. (default:
True
)