IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

retour du résultat d'un script python en Shell


Sujet :

Python

  1. #1
    Membre régulier

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Points : 100
    Points
    100
    Billets dans le blog
    1
    Par défaut retour du résultat d'un script python en Shell
    Bonjour à tous,

    Je suis en train de créer une chaine de traitement (script shell) qui exécute un ensemble de scripts python
    Je voudrai dans mon script shell effectuer une suite d'exécution en fonction du résultat retourné par l'un des scripts python

    j'ai vu que je peux faire ça avec python en utilisant le module sys et donc j'utilise sys.exit(1) et sys.exit(-1)

    Ma question est comment récupérer le résultat au niveau du shell car ce que je récupère c'est ne pas la valeur 1 ou la valeur -1
    mais tout ce que le script python affiche (avec print)
    Je pensais que je devais récupérer le 1 ou le -1.

    est-ce que quelqu’un peut m'expliquer le retour de python avec mon cas?
    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Ça serait peut être mieux d'écrire un seul programme Python qui s'occupe de lancer ces différents scripts comme "modules" ou sous-programmes.
    Pour ce qui est de récupérer le status d'une commande lancée via le shell python positionne le status via exit, mais pour ce qui est de la récupérer depuis le shell, çà dépend du shell (et non de python).
    Pour bash, il se récupère dans $?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut code retour shell/bash
    Bonjour

    Attention : dans le shell, les codes retour sont des entiers non signés sur un octet.

    fichier code.py :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import sys
     
    sys.exit(int(sys.argv[1]))
    A l'usage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    prompt:~$ python code.py 3; echo $?
    3
    prompt:~$ python code.py -1; echo $?
    255
    prompt:~$ python code.py 256; echo $?
    0
    prompt:~$ python code.py 257; echo $?
    1
    prompt:~$ python code.py 255; echo $?
    255
    donc pas de -1 !
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  4. #4
    Membre régulier

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Points : 100
    Points
    100
    Billets dans le blog
    1
    Par défaut
    Merci pour vos réponses.

    je récupère bien la valeur de $? (1 ou 0) j'ai modifié la valeur -1
    il m'affiche bien la valeur selon les cas
    je voudrai faire un traitement en fonction de la valeur retournée
    ce qui ne marche pas c'est ce test quand je fais

    if (($?==0)); then echo "0"
    else echo "1"
    fi

    au niveau du test il m'affiche toujours la valeur "0" indépendamment de la valeur de $?
    est-ce que la syntaxe de ma condition est correcte?

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par nina2007 Voir le message
    je récupère bien la valeur de $? (1 ou 0) j'ai modifié la valeur -1
    il m'affiche bien la valeur selon les cas
    je voudrai faire un traitement en fonction de la valeur retournée
    ce qui ne marche pas c'est ce test quand je fais

    if (($?==0)); then echo "0"
    else echo "1"
    fi

    au niveau du test il m'affiche toujours la valeur "0" indépendamment de la valeur de $?
    est-ce que la syntaxe de ma condition est correcte?
    Bash et Python sont deux langages de scripting suffisamment utiles et répandus pour mériter leurs propres forums. Ici c'est le forum Python, pour Bash c'est ailleurs...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 57
    Points : 62
    Points
    62
    Par défaut
    outre le retour code tu peut lever une exceptions en sortie
    regarde les fonctions
    sys.stdin
    sys.stdout
    sys.stderr

    https://docs.python.org/3/library/sy...err#sys.stderr

  7. #7
    Membre régulier

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Points : 100
    Points
    100
    Billets dans le blog
    1
    Par défaut
    je reviens avec beaucoup de retard sur cette discussion. J'ai pas eu le temps de revenir dessus
    Donc, je reviens juste pour dire que la solution c'était simplement de récupérer le résulat de la commande qui lance le script python dans une variable
    r et puis de faire le test en shell avec $r et non pas $? comme je le faisais au départ.
    merci à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Résultats Execution Script Python
    Par PythonNovices dans le forum Général Python
    Réponses: 2
    Dernier message: 17/12/2014, 15h10
  2. résultat d'un script python dans java
    Par trin86 dans le forum Général Java
    Réponses: 8
    Dernier message: 03/05/2009, 19h35
  3. lancer un script shell et recupérer les résultats via script python
    Par GoldenEyes dans le forum Général Python
    Réponses: 2
    Dernier message: 04/09/2008, 18h15
  4. Réponses: 7
    Dernier message: 18/04/2008, 20h07
  5. Réponses: 3
    Dernier message: 05/04/2005, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo