[python] syntaxe execution programme externe

syntaxe execution programme externe [python] - Python - Programmation

Marsh Posté le 27-01-2015 à 09:29:06    

Bonjour, je me lance dans la programmation en Python 3 et je butte sur la syntaxe permettant d'executer une programme externe (en l'occurence xplanet) dans mon script python. Malgres des recherches sur google à chaque nouvelles pages une nouvelles syntaxes !!! je travail actuellement sous windows 7 et voici un exemple de mon script :
#os.startfile("c:/ma-mateo/xplanet.exe -fontsize 24 -conf maconfig -output C:/ma-meteo/img/img_moon.png -body moon -geometry 750x750 &" )
 
kkun pourrai me renseigner SVp ? Merci d'avance

Reply

Marsh Posté le 27-01-2015 à 09:29:06   

Reply

Marsh Posté le 27-01-2015 à 14:48:26    

Le "&" à la fin de la ligne n'a pas de sens, ça sert à créer un process détaché du shell, t'es pas dans un shell.
 
Le moyen moderne de créer un process est subprocess:

Code :
  1. subprocess.check_call([
  2.    "c:/ma-mateo/xplanet.exe", "-fontsize", "24", "-conf", "maconfig", "-output", "C:/ma-meteo/img/img_moon.png", "-body", "moon", "-geometry", "750x750"
  3. ])


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-01-2015 à 18:01:23    

Merci pour ta réponse mais voici le message d'erreur que j'obtiens :
Traceback (most recent call last):
  File "c:\ma-meteo\mameteo2.py", line 23, in <module>
    "/ma-meteo/xplanet.exe", "-fontsize", "24", "-conf", "/ma-meteo/maconfig", "
-output", "/ma-meteo/img/img_moon.png", "-body", "moon", "-geometry", "750x750"
  File "C:\Python33\lib\subprocess.py", line 544, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/ma-meteo/xplanet.exe', '-fontsize', '
24', '-conf', '/ma-meteo/maconfig', '-output', '/ma-meteo/img/img_moon.png', '-b
ody', 'moon', '-geometry', '750x750']' returned non-zero exit status 1
 
Kezako ?

Reply

Marsh Posté le 27-01-2015 à 18:37:56    

Conventionnellement, les programmes renvoient un status 0 si tout s'est bien passé, non-0 s'il y a eu une erreur.

 

check_call vérifie que le status de l'exécutable est bien 0, et génère une exception si ce n'est pas le cas. Je ne sais pas quel est le comportement de xplanet, je te suggère de regarder ce qu'il en est.

 

Si tu veux ignorer le code de status, tu peux remplacer check_call par call (qui va juste renvoyer le code de status).

 

Je suis pas convaincu par tes chemins par contre. Ils m'ont l'air un peu douteux pour du windows.


Message édité par masklinn le 27-01-2015 à 18:38:53

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-01-2015 à 19:59:15    

Pourquoi passer les paramètres entre "", n'y a t il pas de risque de confusion pour le programme ?

Reply

Marsh Posté le 27-01-2015 à 20:13:36    

Quels paramètres? Confusion à quel niveau?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-01-2015 à 10:32:04    

masklinn a écrit :

Quels paramètres? Confusion à quel niveau?


"c:/ma-mateo/xplanet.exe", "-fontsize", "24", "-conf", "maconfig", "-output", "C:/ma-meteo/img/img_moon.png", "-body", "moon", "-geometry", "750x750"
Pourquoi séparer les paramètres par des quotes ?

Reply

Marsh Posté le 28-01-2015 à 11:05:12    

Parce-que c'est une bonne habitude, ça permet au système de correctement gérer l'échappement et le quoting des paramètres le jour ou c'est nécessaire.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed