下面的代码接受mode
的命令行参数,例如-m fizz
和{['fizz', 'bazz']
传递给主函数(对于上面的第二个示例)。使用空格传递命令行参数似乎不友好,因此我希望argparse接受逗号分隔的列表,例如-m fizz,bazz
或{
import agrparse
...
parser.add_argument("-m", "--mode", nargs="*",
default=["fizz", "bazz", "razmataz"],
help="Comma separated list of mode(s) to use, e.g."
"[\"fizz\", \"bazz\"]")
main(parser.parse_args())
用一个简单的脚本打印
sys.argv
我得到这就是你的
parser
必须处理的。在最后一种情况是,每个字符串都是
sys.argv
中的一个单独的项,这是您的nargs='*'
设计用来处理的。它应该返回Namespace(mode = ['fizz','bazz'])
你有两个选择。您可以在将
sys.argv
传递给parser
之前清除它。或者,您可以在解析后查看args.mode
属性,并根据需要对其进行清理。在例如,}。其他则需要删除多余的
'fizz,bazz'
可以在,
上拆分。'[fizz,bazz]'
需要先剥离{,
'。在您可以在自定义操作类中执行这种拆分和清理,但这不会为您节省任何工作。在
自定义
^{pr2}$type
也可以用于拆分字符串列表是嵌套的。可以使用默认的
nargs
,但它不允许常规的空格分隔列表。但是有一些标准的python方法可以扁平化嵌套列表。在相关问题 更多 >
编程相关推荐