Executer fichier c

Résolu/Fermé
roideseaux Messages postés 261 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2023 - 17 janv. 2016 à 19:07
roideseaux Messages postés 261 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2023 - 19 janv. 2016 à 19:19
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

A voir également:

4 réponses

Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
Modifié par Flachy Joe le 17/01/2016 à 21:57
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
0
roideseaux Messages postés 261 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2023 5
17 janv. 2016 à 23:37
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... :/
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
18 janv. 2016 à 10:13
Salut,
ça marche comme ça :
import subprocess
subprocess.call(["monfichier", "arg1", "arg2"])


monfichier doit être dans le répertoire depuis lequel on appelle le script.

Si tu veux récupérer la sortie standard de ton programme en C, il faut utiliser subprocess.check_output
0
roideseaux Messages postés 261 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2023 5
18 janv. 2016 à 23:40
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 :)
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 19/01/2016 à 10:57
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.
0
roideseaux Messages postés 261 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2023 5
19 janv. 2016 à 19:19
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 :)
0