Python 2.6: lecture de données depuis une application de la console Windows. (os.system?)

J’ai une application console Windows qui renvoie du texte. Je veux lire ce texte dans un script Python. J’ai essayé de le lire en utilisant os.system, mais cela ne fonctionne pas correctement.

import os foo = os.system('test.exe') 

En supposant que test.exe renvoie “bar”, je souhaite que la variable foo soit définie sur “bar”. Mais ce qui se passe, c’est qu’il affiche “bar” sur la console et que la variable foo est définie sur 0.

Que dois-je faire pour obtenir le comportement que je veux?

Veuillez utiliser le sous-processus

 import subprocess foo = subprocess.Popen('test.exe',stdout=subprocess.PIPE,stderr=subprocess.PIPE) 

http://docs.python.org/library/subprocess.html#module-subprocess

AVERTISSEMENT: Cela ne fonctionne que sur les systèmes UNIX.

Je trouve que ce subprocesssubprocess est excessif lorsque tout ce que vous voulez est une sortie à capturer. Je recommande l’utilisation de commands.getoutput() :

 >>> import commands >>> foo = commands.getoutput('bar') 

Techniquement, il ne s’agit que de faire un popen() en votre nom, mais c’est beaucoup plus simple pour cette raison.

BTW, os.system() ne renvoie pas la sortie de la commande, il ne renvoie que le statut de sortie, ce qui explique pourquoi il ne fonctionne pas pour vous.

Sinon, si vous avez besoin à la fois du statut de sortie et de la sortie de commande, utilisez commands.getstatusoutput() , qui renvoie un 2-tuple de (status, output):

 >>> foo = commands.getstatusoutput('bar') >>> foo (32512, 'sh: bar: command not found')