Lancer un programme python depuis un script shell

Fermé
pasletempsdetrouverunpseudo Messages postés 4 Date d'inscription jeudi 9 mai 2019 Statut Membre Dernière intervention 10 mai 2019 - 9 mai 2019 à 14:51
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 - 10 mai 2019 à 18:54
Bonjour à la communauté,

J'ai depuis un moment un problème qui me semble être minuscule, néanmoins je n'arrive pas à trouver de solutions malgré mes longues recherches (sur des forums, etc...). Il faut dire que je découvre les commandes linux...

J'ai fait un programme python qui prend en entrée un fichier de données .dat. Je peux le lancer sans soucis avec la console grâce à la commande "python3 mon_prgm.py nom_de_mon_fichier.dat".

A présent, j'ai besoin de faire un script shell (ou un programme python, mais j'ai débord essayé en script shell) qui lance mon 1er programme autant de fois qu'il y a de fichiers de données qui contiennent le mot "NOEUD" dans le répertoire courant.

Voilà à quoi ressemble mon code :

for fichier in find -type f -name "NOEUD*.dat"/mon_repertoire/*
do
python3 mon_prgm.py fichier
done

Cela génère l'erreur :
FileNotFoundError: [Errno 2] No such file or directory: 'fichier'

Concrètement, j'ai l'impression que le programme python est bien lancé, mais que son paramètre d'entrée (qui doit être un fichier de données .dat) ne comprend pas que la variable "fichier" du script shell est un fichier. Et 2ème problème, le message d'erreur apparaît toujours 5 fois (comme si le prgm python essayait de se lancer 5 fois), alors qu'il n'y a pas 5 fichiers s'appellant "NOEUD*.dat" ...

Merci d'avance si quelqu'un peut m'aider !

4 réponses

UnGnU Messages postés 1156 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 152
9 mai 2019 à 15:23
Salut,

Avant de lancer quoi que ce soit, on commence toujours en général, par voir ce que pourrait donner une commande en retour…

Donc, perso je commencerais plutôt par voir ce que me retourne la commande (voir au passage le man find pour la bonne syntaxe ;-\) :
find /mon_repertoire/ -type f -name "NOEUD*.dat"

Si le retour est concluant, avec les exemples en fin du man find, j'essaierai d'y inclure le programme python…

0