Ignorant CalledProcessError

Je suis en utilisant le subprocess module et check_output() pour créer une coquille virtuelle dans mon script Python, et il fonctionne très bien pour les commandes que le retour à zéro de la sortie de statut, cependant, pour ceux qui n'en ont pas, il renvoie une exception d'impression, sans l'erreur qui aurait été affiché dans la sortie sur un shell.

Par exemple, je m'attends à quelque chose à travailler comme ça:

>>> shell('cat non-existing-file')
cat: non-existing-file: No such file or directory

Mais au lieu de cela, ce qui se passe:

>>> shell('cat non-existing-file')
CalledProcessError: Command 'cat non-existing-file' returned non-zero exit status 1 (file "/usr/lib/python2.7/subprocess.py", line 544, in check_output)

Même si je pouvais enlever le Python message d'exception à l'aide de try et except, je veux toujours la cat: non-existing-file: No such file or directory à afficher à l'utilisateur.

Comment pourrais-je aller sur le faire?

shell():

def shell(command):
    output   = subprocess.check_output(command, shell=True)
    finished = output.split('\n')

    for line in finished:
      print line
    return
Comment est shell() défini?
Ajoutés à la question.

OriginalL'auteur user1447941 | 2012-08-18