我有一个python脚本,应该用两个参数调用:
$ python ./script.py arg1 arg2
这个脚本的内容是这样的:
#!/usr/bin/python
import sys
import commands
if len(sys.argv) != 3:
print 'Usage: python %s <IP1> <IP2>' % (sys.argv[0])
sys.exit()
.
.
.
with open('/tmp/file.txt', 'r+') as f:
for line in f:
execfile("script.py --host $line")
但这不正确,当我使用这种类型的execfile
这是错误的,因为:
它说语法不正确..正确的形式是execfile(&#34; script.py&#34;)但我有一个参数,我也有来自for for循环的变量行
我希望script.py
使用--host
和file.txt
我该怎么做?
谢谢
答案 0 :(得分:1)
execfile
通过加载它来运行python脚本,而不是脚本。您应该使用os.system
或subprocess.Popen
。
例如:
#!/usr/bin/python
import sys
import commands
import os # Change here!!
if len(sys.argv) != 3:
print 'Usage: python %s <IP1> <IP2>' % (sys.argv[0])
sys.exit()
.
.
.
with open('/tmp/file.txt', 'r+') as f:
for line in f:
os.system("script.py --host %s" % line)
使用subprocess运行命令将允许您存储命令中的标准和错误输出。
使用subprocess
:
import subprocess
with open('/tmp/file.txt', 'r+') as f:
for line in f:
proc = subprocess.Popen(["script.py", "--host", line], sdtout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate() # out: stadar output, err: error output