Executer fichier c
Résolu
roideseaux
Messages postés
274
Statut
Membre
-
roideseaux Messages postés 274 Statut Membre -
roideseaux Messages postés 274 Statut Membre -
Bonjour,
Je souhaite executer un fichier C avec des paramètres à partir de mon script en python mais je n'y parviens pas !
J'arrive à executer ce fichier avec une commande système (./monfichier arg1 arg2 arg3 arg4) mais je n'arrive pas à l'inclure dans mon script !
Je suis sous debian sur un raspberry :)
Merci
Je souhaite executer un fichier C avec des paramètres à partir de mon script en python mais je n'y parviens pas !
J'arrive à executer ce fichier avec une commande système (./monfichier arg1 arg2 arg3 arg4) mais je n'arrive pas à l'inclure dans mon script !
Je suis sous debian sur un raspberry :)
Merci
4 réponses
-
Salut,
pour la syntaxe : ce n'est pas un fichier C que tu exécutes mais le programme compilé à partir de celui-ci...
Pour ton pb, regarde par là https://docs.python.org/2/library/subprocess.html#using-the-subprocess-module
;-) Flachy Joe ;-)
"Qui ne se plante jamais n'a aucune chance de pousser !" Graf anonyme -
Exact, c'est pour cela que je n'ai pas d'extension ^^
Je suis allé voir au lien que tu m'a passé mais je n'ai pas compris comment utiliser subprocess... :/ -
Ok, j'ai mon script python et mon programme compilé dans le meme dossier mais quand la commande du script s'execute, j'ai une erreur :
Traceback (most recent call last):
File "test.py", line 28, in <module>
subprocess.call(["radioEmission", "0", "666", "2", "on"])
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Et vu que je suis une bille en python...
Merci en tout cas :)-
Comme "radioEmission" n'est pas une commande système, tu dois préciser le répertoire où elle se trouve. Sous Linux, cela sera sous la forme "/chemin/vers/radioEmission" par exemple, ou "./radioEmission" si l'exécutable se trouve dans le répertoire courant.
Si tu utilises Python 3.5, call() fonctionne toujours, mais est considérée obsolète, remplacée au profit de run() : https://docs.python.org/3.5/library/subprocess.html#using-the-subprocess-module.
Dal
edit : je vois que tu dis que tu es sous Debian. Sous Debian, tu n'auras pas accès à 3.5 par les paquets à moins que tu n'aies installé Python à partir de Debian sid (unstable). Comme c'est peu probable, tu devrais toujours être en version 2.7, ou un truc du genre.
-
-
Oui, effectivement, je suis toujours avec la version 2 de python ^^
impeccable, ca fonctionne, il me semblai avoir testé cette solution mais ca devait etre avec un test de commande systeme ^^
Merci :)