2009-05-08 6 views
3

J'essaye d'écrire un script python (dans Windows) qui exécute un fichier batch et prendra la sortie de la ligne de commande de ce fichier batch en entrée. Le fichier de commandes exécute des processus auxquels je n'ai pas accès et génère des résultats en fonction de la réussite de ces processus. Je voudrais prendre ces messages du fichier de commandes et les utiliser dans le script python. Quelqu'un a des idées sur la façon de faire cela?Piping Batch Fichier de sortie vers un script Python

Répondre

1

Essayez le sous-processus.Popen(). Il vous permet de rediriger stdout et stderr vers des fichiers.

2

Voici un script python exemple qui fonctionne test.bat et affiche la sortie:

import os 

fh = os.popen("test.bat") 
output = fh.read() 
print "This is the output of test.bat:", output 
fh.close() 

Source de test.bat:

@echo off 
echo "This is test.bat" 
8
import subprocess 

output= subprocess.Popen(
    ("c:\\bin\\batch.bat", "an_argument", "another_argument"), 
    stdout=subprocess.PIPE).stdout 

for line in output: 
    # do your work here 

output.close() 

Notez qu'il est préférable de commencer votre fichier batch avec "@echo off".