Parce que les os.system() indique un échec par le code de sortie de la méthode
valeur de retour = 0 -> ok tout
valeur de retour != 0 -> une erreur
Le code de sortie de la commande est directement passé à Python.
Il y a de la documentation de vous dire que l'os.system() permettrait de lever une exception en cas d'échec. os.système() appelle la sous-jacente appel system() de l'OS et retourne sa valeur de retour.
Veuillez lire les os.system() documentation soigneusement.
Il y a deux problèmes dans votre extrait de code. Tout d'abord, ne jamais faire juste try: ... except:, toujours être précis quant exception que vous souhaitez gérer. Sinon, votre programme, simplement avale tout type d'erreur, mais aussi ceux que vous ne vous attendez pas. Dans la plupart des cas, cela conduira à un comportement inattendu à un autre moment au cours de l'exécution.
En outre, os.system() appelle la plupart du temps être remplacés par leurs homologues de la subprocess module.
Pour voir ce qui ne va pas, laissez le try/except bloc et vérifier la traçabilité en amont et d'exception. Comme d'autres l'ont souligné, vous remarquerez qu'il n'y a pas d'exception dans votre cas, c'est pourquoi votre chaîne personnalisée n'est pas imprimé.
Ligne du bas: penser aux exceptions spécifiques peuvent se produire dans votre bloc de code. Réfléchir à laquelle vous prévoyez d'arriver pour certaines raisons et traiter de façon appropriée. Ne manipulez pas ceux que vous ne vous attendez pas.
wrongcommand: command not found est la sortie de la coquille os.system est à l'aide d'invoquer la commande. os.system ne jetez pas une exception
EDIT: édité par copie et coller une partie de mgilson commentaire
merci, mais comment pouvez-vous attraper en python? est-il même possible? Oui, mais pas à l'aide de os.system(). C'est une des raisons pour lesquelles vous devriez utiliser les subprocess module, comme indiqué dans @mgilson de réponse. Plus précisément, wrongcommand: command not found est la sortie de la shell que os.system est à l'aide d'invoquer la commande. (d'un autre shell avec un autre PATH peut trouver la commande).
Si vous voulez avoir une exception levée lorsque la commande n'existe pas, vous devez utiliser
subprocess
:Venez pour penser à elle, vous devriez probablement utiliser
subprocess
au lieu deos.system
de toute façon ...OriginalL'auteur mgilson
Parce que les os.system() indique un échec par le code de sortie de la méthode
Le code de sortie de la commande est directement passé à Python.
Il y a de la documentation de vous dire que l'os.system() permettrait de lever une exception en cas d'échec. os.système() appelle la sous-jacente appel system() de l'OS et retourne sa valeur de retour.
Veuillez lire les os.system() documentation soigneusement.
OriginalL'auteur Andreas Jung
Il y a deux problèmes dans votre extrait de code. Tout d'abord, ne jamais faire juste
try: ... except:
, toujours être précis quant exception que vous souhaitez gérer. Sinon, votre programme, simplement avale tout type d'erreur, mais aussi ceux que vous ne vous attendez pas. Dans la plupart des cas, cela conduira à un comportement inattendu à un autre moment au cours de l'exécution.En outre,
os.system()
appelle la plupart du temps être remplacés par leurs homologues de lasubprocess
module.Pour voir ce qui ne va pas, laissez le try/except bloc et vérifier la traçabilité en amont et d'exception. Comme d'autres l'ont souligné, vous remarquerez qu'il n'y a pas d'exception dans votre cas, c'est pourquoi votre chaîne personnalisée n'est pas imprimé.
Ligne du bas: penser aux exceptions spécifiques peuvent se produire dans votre bloc de code. Réfléchir à laquelle vous prévoyez d'arriver pour certaines raisons et traiter de façon appropriée. Ne manipulez pas ceux que vous ne vous attendez pas.
OriginalL'auteur Jan-Philip Gehrcke
wrongcommand: command not found
est la sortie de la coquilleos.system
est à l'aide d'invoquer la commande.os.system
ne jetez pas une exceptionEDIT: édité par copie et coller une partie de mgilson commentaire
Oui, mais pas à l'aide de
os.system()
. C'est une des raisons pour lesquelles vous devriez utiliser lessubprocess
module, comme indiqué dans @mgilson de réponse.Plus précisément,
wrongcommand: command not found
est la sortie de la shell queos.system
est à l'aide d'invoquer la commande. (d'un autre shell avec un autrePATH
peut trouver la commande).OriginalL'auteur gefei