OVH Cloud OVH Cloud

[newbie] Lancer un exe : spawnl ?

5 réponses
Avatar
NoSpAm
Bonjour,

Je m'initie à Python et je voudrais lancer un programme sous WinXP à partir
d'un script, en passant des paramètres, autrement dit obtenir le même
résultat que lorsque je tape la ligne de commande "c:\test\appli.exe -o
source.txt destination.txt" (pour mon test, les fichiers source.txt et
destination.txt se trouvent dans le même répertoire que appli.exe).

Après avoir fait quelques recherches, il me semble que la commande
appropriée est spawnl (je veux attendre que l'exe ait terminé ses
traitements avant de poursuivre le script Python). J'arrive à lancer l'exe
avec spawnl('os.P_WAIT', 'c:/test/appli.exe') mais je n'arrive pas à passer
mes paramètres. J'ai essayé spawnl('os.P_WAIT', 'c:/test/appli.exe', '-o
source.txt destination.txt'), mais l'exeme signale dans ce cas qu'il
n'arrive pas à ouvrir le fichier source.txt. Peut-être faut-il préciser
aussi le path pour source.txt et destination.txt ?

Merci de votre aide, et joyeuses fêtes à tout le monde !

5 réponses

Avatar
News M Claveau /Hamster-P
Bonsoir ! (et Noyeux Joël)

Le script, que tu lances, s'exécute dans le répertoire courant. Il faut
donc, soit que ton logiciel gère ce fait, soit que fasse précéder la ligne
par un os.chdir( path)

Et puis, je pense que la constante 'os.P_WAIT' se passera bien des
apostrophes.

Et aussi, les arguments multiples peuvent être séparés par des virgules
(mais, bon, une grosse chaîne est OK aussi).
Avatar
NoSpAm

Le script, que tu lances, s'exécute dans le répertoire courant. Il faut
donc, soit que ton logiciel gère ce fait, soit que fasse précéder la ligne
par un os.chdir( path)


En effet, je pensais que le problème venait d'ailleurs alors que c'était
tout bête : j'ai poursuivi mes essais en mettant un path complet au lieu de
'source.txt' et 'destination.txt', ça fonctionne parfaitement.

Et puis, je pense que la constante 'os.P_WAIT' se passera bien des
apostrophes.


Oups, c'est vrai que ça marche beaucoup moins bien avec des apostrophes...
:)

Avatar
News M Claveau /Hamster-P
Re

Tu devrais aussi regarder les fonctions popenX (et, avec Python 2.3 ou 2.4,
le module subprocess). Ils présentent un aspect "pilotage" des I/O standards
des plus intéressants.

@-salutations
--
Michel Claveau
Avatar
NoSpAm

Tu devrais aussi regarder les fonctions popenX (et, avec Python 2.3 ou
2.4,
le module subprocess). Ils présentent un aspect "pilotage" des I/O
standards
des plus intéressants.


J'ai suivi ton conseil, ces fonctions sont vraiment très intéressantes ! En
fait, plus j'avance dans la découverte de Python (j'ai la version 2.3.4 sous
XP), plus je suis surpris des choses extraordinaires que ce langage permet
de faire assez facilement.

Luca

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Re-re !

Pour Python 2.3, voir http://effbot.org/downloads/#subprocess
(ce module est présent, en standard, dans Python 2.4)