Mise à jour: Lorsque j'utilise le subprocess.call
au lieu de subprocess.Popen
, le problème est résolu - Quelqu'un sait-il ce qui est la cause? Et il est venu un autre problème: je n'arrive pas à trouver un moyen de contrôler la sortie ... Y at-il un moyen de rediriger la sortie de subprocess.call
vers une chaîne ou quelque chose comme ça? Merci!Quand j'écris un script python pour exécuter Devenv avec configure « Debug | Win32 » il ne fait rien
Je suis en train d'utiliser Devenv
pour construire des projets, et il fonctionne très bien quand je tape dans l'invite de commande comme devenv A.sln /build "Debug|Win32"
- mais quand j'utilise un python pour l'exécuter en utilisant Popen(cmd,shell=true)
où cmd
est la même ligne que ci-dessus, ça ne montre rien. Si je supprime le |
, changez-le pour "Debug"
seulement, cela fonctionne ....
Est-ce que quelqu'un sait pourquoi cela se produit? Je l'ai essayé de mettre un \
avant |
, mais rien ne se passe ..
Ce code J'utilise:
from subprocess import Popen, PIPE
cmd = ' "C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\IDE\\devenv" solution.sln /build "Debug|Win32" '
sys.stdout.flush()
p = Popen(cmd,shell=True,stdout=PIPE,stderr=PIPE)
lines = []
for line in p.stdout.readlines():
lines.append(line)
out = string.join(lines)
print out
if out.strip():
print out.strip('\n')
sys.stdout.flush()
... qui ne fonctionne pas, cependant, si j'échange Debug|Win32
avec Debug
, cela fonctionne parfaitement ..
Merci pour tous les commentaires ici
Juste une intuition qui est apparue dans ma tête, quelle note avez-vous utilisée/pouvez-vous afficher la déclaration d'importation? –
Bien sûr, il est: de Popen import subprocess, PIPE p = Popen (cmd, shell = True, stdout = PIPE, stderr = PIPE) où cmd est quelque chose comme « .. (chemin)/devenv" solution/build "Debug | Win32" ... il semble que le | signe rend l'ensemble de la commande étant ignoré ... –
J'ai découvert que créer un fichier compile.bat à la volée en Python, qui contient toute la commande 'devenv.com', puis en exécutant compile.bat à partir de Python en utilisant' Popen' fonctionne comme un charme. –