2014-05-21 142 views
0

我有一個Python腳本,應該有兩個參數來調用:excecute帶參數的Python腳本在另一個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(「script.py」),但我有一個說法,也有我變線從我的for循環

我想與--host和可變的,應該是從file.txt

每條線路我如何能做到運行script.py

通過加載它,而不是作爲一個腳本謝謝

+0

,因爲它說的語法不正確correct..The形式是'的execfile(「script.py」)'但是我有一個說法,也是我有變量'line'從我的'for循環' – MLSC

回答

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意志的命令允許您從命令存儲STANDAR和錯誤輸出中。

使用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 
+0

你能告訴我如何?在我的例子中更詳細的答案?(我的意思是變量行的參數)謝謝 – MLSC

+1

使用'%'語法來做到這一點,例如:'os.system(「script.py --host%s」%line)''。答案已更新以反映此更改。 –

+0

+1非常好...感謝您的幫助... – MLSC

相關問題