【发布时间】:2015-07-20 06:58:00
【问题描述】:
我有一个带有 3-4 个参数的解析器,效果很好。我想为脚本提供未知数量的额外参数,这些参数将被加载到模板中。我已经阅读了 argparse 文档,但我不确定这是否可能。我可以parse_known_arguments(),但我仍然需要自己处理["--placeholder1", "value1", "--placeholder2", "value2", ...] 数组。我应该继续这样做,还是有更 Pythonic 的方式?
就在我的脑海中:
parser = argparse.ArgumentParser()
parser.add_argument("--template", required=True)
parser.add_argument("--location", required=True)
args,unknown = parser.parse_known_arguments()
tpl = LoadTemplate(args.template)
# Missing part where I transform unknown into an dict or namespace called extraarguments
raw = tpl.render(extraarguments)
# Print into args.location raw
render.py --template template1 --location /path/to/invoices --author John --customer Customer1 --title "Your invoice is ready!"
render.py --template template2 --location /path/to/newsletter --customer Customer2 --sender john@store.com --subject "Weekly newsletter"
在这两种情况下,template 和location 都必须存在,但额外的参数应该被解包并发送到模板渲染函数中。它看起来像单线,但有没有更 Pythonic 的方式呢?
【问题讨论】:
-
只是简单的额外参数,还是一堆带有(可能)参数的未知选项?提供一些您期望的命令行输入示例,以澄清您的问题。
-
argparse accept everything 的可能重复项
-
如果您说明您将如何处理额外的列表,我们可能会提出更好的方法。
-
你能给我们一些命令参数的例子吗?
argparseparse? -
我已经更新了问题。
标签: python python-2.7 argparse