在另一个python脚本中使用参数执行python脚本

时间:2014-05-21 19:14:40

标签: python regex loops exec command-line-arguments

我有一个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使用--hostfile.txt

中每一行的变量

我该怎么做?

谢谢

1 个答案:

答案 0 :(得分:1)

execfile通过加载它来运行python脚本,而不是脚本。您应该使用os.systemsubprocess.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