我正在测试一些 argparse 代码。我想要一个可选参数,它n
从选择列表中收集输入的数量。所以,我写道:
import argparse
modules = ["geo", "loc"]
parser = argparse.ArgumentParser()
parser.add_argument("--modules", nargs='*', choices=modules)
有了这个设置,我可以可靠地完全杀死解释器。
如果您传递一组有效的参数,它可以正常工作:
>>> parser.parse_args("--module geo loc geo".split())
Namespace(modules=['geo', 'loc', 'geo'])
但是如果你传入一个未形成的参数,它会完全杀死 python:
>>> parser.parse_args("--module geo metro".split())
usage: [-h] [--modules [{geo,loc} [{geo,loc} ...]]]
: error: argument --modules: invalid choice: 'metro' (choose from 'geo', 'loc')
PS C:\Users\myname\mycode>
我的问题有两个:
- 这是预期的行为吗?如果是这样,这是什么原因?
- 我可以使用这段代码吗,因为我不介意我的程序是否因格式错误的参数而死?还是有一些令人信服的理由来避免这种情况?
作为说明,我在 Windows 7 上使用 Python2.7。