2014-05-21 8 views
0

J'ai un script python qui devrait être appelé avec deux arguments:Excecute un script python avec l'argument dans un autre script python

$ python ./script.py arg1 arg2 

Le contenu de ce script est STH comme ceci:

#!/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") 

Mais ce n'est pas correct, quand j'utilise ce type de execfile c'est faux parce que:

il dit que la syntaxe n'est pas correcte..La forme correcte est execfile ("script.py") mais je ont un argument et aussi j'ai variable ligne de ma boucle

Je veux courir script.py avec --host et variable qui devrait être pour chaque ligne de file.txt

Comment puis-je faire cela?

Merci

+0

Parce qu'il dit que la syntaxe n'est pas correct..The forme correcte est 'execfile ("script.py")' mais j'ai un argument et je dois aussi variable 'coût média de mon 'pour boucle' – MLSC

Répondre

1

execfile exécuter un script python en le chargeant, non pas comme un script. Vous devez utiliser os.system ou subprocess.Popen pour cela.

par exemple:

#!/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) 

Exécutez la commande avec subprocess volonté vous permet de stocker le Standar et ouput erreur de la commande.

En utilisant 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

Pouvez-vous me dire comment? dans la réponse plus détaillée dans mon cas? (je veux dire l'argument avec la ligne variable) merci – MLSC

+1

utiliser la syntaxe '%' pour faire cela par exemple: 'os.system (" script.py --host% s "% line)'. La réponse a été mise à jour pour refléter ce changement. –

+0

+1 très bien ... merci pour votre aide ... – MLSC

Questions connexes