2009-11-08 5 views
20

Je ne suis pas sûr de ce que la valeur de retour de subprocess.call() signifie. Est-ce que je peux supposer qu'une valeur zéro signifie toujours que la commande a été exécutée avec succès?Quelle est la valeur de retour de subprocess.call()?

  • La valeur de retour est-elle équivalente à la valeur de sortie d'une commande shell? Par exemple, le code suivant fonctionnera-t-il pour pratiquement n'importe quelle commande sous Linux?

    cmd = "foo.txt > bar.txt" 
    ret = subprocess.call(cmd, shell=True) 
    if ret != 0: 
        if ret < 0: 
         print "Killed by signal", -ret 
        else: 
         print "Command failed with return code", ret 
    else: 
        print "SUCCESS!!" 
    

    S'il vous plaît me éclairer :-)

  • Répondre

    7

    Il est le code de retour, mais gardez à l'esprit, il est à l'auteur du sous-processus ce que le code de retour signifie. Il y a une forte culture de 0 qui signifie le succès, mais rien ne l'impose.

    4

    Vous êtes à la merci des commandes que vous appelez. Considérez ceci:

    test.py

    #!/usr/bin/env python 
    success=False 
    if not success: 
        exit() 
    

    Ensuite, l'exécution de votre code (avec 'test.py' cmd =) entraînera SUCCÈS !! Simplement parce que test.py n'est pas conforme à la convention de renvoyer une valeur non nulle quand elle échoue.

    Questions connexes