2011-10-28 4 views
-1

Actuellement, j'ai un exe que j'ai besoin de passer des commandes à travers Python. Le code a fonctionné quand il était seul. Lorsque j'ai fusionné cet extrait avec mon programme final, il n'a pas fonctionné.CTRL-C terminer en python

En fait, après les deux premiers upload de fichiers en utilisant le programme shell_start (upload est -f dans le programme que je passe les commandes à), python décide de sauter le téléchargement finale en bas avec le programme appelé shell_forward. Le téléchargement final de 3 fichiers avec le programme shell_forward, ne fonctionne même pas. Donc, ma question principale, si vous êtes confus, est la suivante: pourquoi est-ce que lorsque le programme shell_start finit de télécharger les deux commandes et fichiers, le shell python ne me permet pas de taper quoi que ce soit? Il agit comme une fenêtre d'invite de commande qui ne vous laissera rien saisir après l'exécution du code.

C'est pourquoi je pense qu'un ctrl-c est nécessaire pour terminer shell_start.exe du processus précédent, donc python peut me laisser taper après son exécution.

Voici le code:

import os, time 

name = raw_input("Input your name: ") 
apn = raw_input("Input apn name: ") 
ecid = raw_input("Input ecid name: ") 
kernel = raw_input("Input kernel name: ") 

os.system('shell_start.exe -f %s'%name) 
time.sleep(1) 
os.system('shell_start.exe -f %s'%apn) 
time.sleep(1) 

os.system('shell_forward.exe --imagefile myfile.img --ecid %(x)s --kernel %(y)s '% {"x" : ecid, "y" : kernel}) 

Répondre

2

Vous avez sans doute de meilleurs résultats en remplaçant les appels os.system avec subprocess.

Le module subprocess vous permet de frayer de nouveaux processus, connectez à leurs entrées/sorties/tuyaux d'erreur, et d'obtenir leurs codes de retour. Ce module a l'intention de remplacer plusieurs autres, des modules et des fonctions plus anciennes, telles que:

os.system 
os.spawn* 
os.popen* 
popen2.* 
commands.* 

Voir aussi PEP 324 - PEP propose le module subprocess

+0

qui a fonctionné. Je suis toujours curieux de savoir pourquoi cela se produit avec os.system bien ... hmm ... peut-être un pépin python? J'ai essayé d'utiliser le sous-processus plus tôt, mais je suppose que la lecture sur les différents codes de sous-processus a aidé: P merci pour l'info! – user715578

+0

EDIT: Vous venez de combiner cet extrait de code modifié avec votre suggestion de sous-processus. ne lance toujours pas le prochain programme .. – user715578

Questions connexes