Python-将可变参数传递给子进程的最佳方法.call
问题描述:
我正在尝试使用python脚本多次调用外部命令,每次都使用不同的变量。Python-将可变参数传递给子进程的最佳方法.call
我看到有建议使用subprocess.call来做到这一点,但是我找到的所有文档都没有解释如何传递这个函数变量(例如从一个列表)。
我已经尝试了一些不同的格式,我认为一个替代将是最好的,但它看起来像函数不会接受变量。 我试图获得工作的代码是:
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'
真的,我希望能够通过很多不同的域(列表中的定义:
#!/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)
这与失败)挖掘和接收这些域的IP。
我刚刚开始使用python,所以很抱歉,如果这是非常基本的!
答
您试图在列表上使用modulo operator,我推测您希望对最后一个项目执行字符串格式设置,因为百分比符号被重载以使用字符串进行格式设置,但是您只是想要插入项目而没有任何格式,你可以把它直接:
['dig', '+short', x]
如果你确实想使用的格式,你需要做的字符串:
['dig', '+short', '%s' % x]
不过请注意,这是没有意义的给定你没有做任何格式化。
这很完美!非常感谢你,我确信它只是一些简单的! - 一个音符,为了使这个工作,我必须从调用函数中删除'shell = True',它不会影响我在这里虽然 – Rqomey 2012-04-18 12:44:21
如果这回答你的问题,请随时[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)。 – 2012-04-18 12:51:05