Partage
  • Partager sur Facebook
  • Partager sur Twitter

Python - librairie OS - Returncode

Sujet résolu
    16 mars 2011 à 16:45:28

    Bonjour les zéros.

    J'ai une question, savez vous comment récupérer le code de retour d'un processus ?

    Ps : je ne dois pas utiliser retcode = subprocess.call(["ls", "-l"]).

    ( je ne dois pas importer le module subprocess )

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      16 mars 2011 à 16:48:51

      avec le module os
      • Partager sur Facebook
      • Partager sur Twitter
        16 mars 2011 à 16:52:37

        Oui ça je m'en doute, mais justement je demande laquelle, ou alors dans sys ?

        J'ai déjà fouillé pas mal et je n'ai pas trouvé..
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          16 mars 2011 à 17:04:36

          Je ne vois pas comment recuperer le code de retour avec popen :S

          j'arrive a récuperer la sortie standard en faisant os.popen(command).read() mais rien d'autres.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            16 mars 2011 à 17:06:40

            >>> import os
            >>> result = os.popen("ls -l", "r").readlines()
            


            Mais si c'est pour récupérer la liste des fichiers dans un répertoire il y a beaucoup mieux, faudrait être plus précis
            • Partager sur Facebook
            • Partager sur Twitter
              16 mars 2011 à 17:16:12

              Mais ça ça me donne juste le resultat de ls.

              Moi je voudrai le code de retour, c'est à dire 0 si le processus s'est deroulé correctement et 1 si il y a eu une erreur.
              • Partager sur Facebook
              • Partager sur Twitter
                16 mars 2011 à 17:18:17

                @fred: Il cherche à obtenir le code de retour, pas la sortie du processus.

                Je pense qu'avec les fonctions os.spawn* (et, le cas échéant si c'est en exécution parallèle, os.waitpid()), tu pourras obtenir ce que tu cherches.

                Au pire (mais vraiment au pire), la fonction os.system fait aussi ce genre de choses :

                >>> retcode = os.system("echo coucou")
                coucou
                >>> retcode
                0
                >>> retcode = os.system("killall programmeinexistant")
                programmeinexistant: no process found
                >>> retcode
                256
                


                Edit : grilled
                • Partager sur Facebook
                • Partager sur Twitter
                Zeste de Savoir, le site qui en a dans le citron !
                Anonyme
                  16 mars 2011 à 17:25:10

                  Ah ok :)

                  os.spawnv(os.P_WAIT, "ls", "l")
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 mars 2011 à 17:48:49

                    Merci pour vos réponses, je n'ai pas le droit d'utiliser os.system() car il fait appel à a un shell.

                    Je vais regarder avec spawn, je vous redis :)

                    ( Je dois coder en python, un shell auto suffisant )


                    EDIT : Merci à tous les deux ça fonctionne comme je veux :)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Python - librairie OS - Returncode

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown