如何导入使用argparse的模块

3

我得到了调用foo.py模块的代码,使用argparse处理变量,需要一些变量,-a和一个元素。

python foo.py -a element

这个很好用,现在我得到了一个元素列表,我想使用foo.py运行它们中的所有元素。所以我创建了一个如下的脚本:

import foo
for i in range(len(element)):
# how to run foo and pass -a here?

另一种选择将是使用execfile()。
execfile("foo.py") #should I set the -a as some global variable here?

我在这里遵循了argparse模块如何添加不带任何参数的选项?,但我不太明白如何做到这一点。

编辑

参考从另一个脚本导入Python脚本并使用参数运行它,现在我可以成功运行脚本,但是否有更好的解决方案来添加到sys.args中的列表?或者我必须在main()完成后先添加元素,然后再从sys.args中删除它,反复进行此操作。


这不是你想要的吗?p.add_argument('-f', '--foo', action='store_true') 我不确定你在问什么。如果你想要一个布尔值,那么 store_true 是正确的选择。 - O.rka
1
可能是从另一个脚本导入Python脚本并带参数运行的重复问题。 - Karin
4
@karin - 非常有趣的链接,但对于使用if __name__ == "__main__":条件的脚本不起作用,因为导入的模块将具有不同的名称。 - tdelaney
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - tdelaney
1个回答

4
感谢 @Karin,这很好地解决了问题。
import sys
sys.argv += ['-a','-H MYHOSTNAME' .... other options]
from pyrseas import dbtoyaml
dbtoyaml.main()

这也可以工作。

proc = subprocess.Popen(['python', 'foo.py',  '-a', 'bala'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接