Python-将变量参数传递给subprocess.call的最佳方法

时间:2012-04-18 12:37:38

标签: python function

我试图使用python脚本多次调用外部命令,每次都使用不同的变量。

我看到有建议使用subprocess.call来执行此操作,但是我找到的所有文档都没有解释如何传递此函数变量(例如,从列表中)。

我尝试了许多不同的格式,我认为替换会是最好的,但似乎函数不会接受变量。 我尝试开始工作的代码是:

#!/usr/bin/python
domain_list             = ["google.com", "google.ie"]

from subprocess import call

for x in domain_list:
    print x
    cmd_list       = ['dig', '+short', '%s'] %x
    call(cmd_list, shell=True)

这是失败的:

Traceback (most recent call last):
File "./dnscheck.py", line 16, in <module>
cmd_list    = ['dig', '+short', '%s'] %arg
TypeError: unsupported operand type(s) for %: 'list' and 'str'

我真的希望能够通过一堆不同的域(在列表中定义)来挖掘和接收这些域的IP。

我刚刚开始使用python,对不起,如果这是非常基本的话!

1 个答案:

答案 0 :(得分:6)

您正在尝试在列表中使用modulo operator,我认为您希望对最后一项进行字符串格式化,因为百分比符号已重载以使用字符串进行格式化,但您只是想插入没有任何格式的项目,你可以直接给它:

['dig', '+short', x]

如果您确实想使用格式化,则需要在字符串上执行此操作:

['dig', '+short', '%s' % x]

但请注意,鉴于您没有进行任何格式化,这是毫无意义的。