Игнорирование CalledProcessError

Я использую модуль subprocessи check_output()для создания виртуальной оболочки в моем скрипте Python, и он отлично работает для команд, которые возвращают нулевой статус выхода, однако для тех, которые этого не делают, он возвращает исключение без печати ошибки это было бы отображено в выводе в обычной оболочке.

Например, я ожидал, что что-то будет работать так:

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

Но вместо этого происходит:

>>> 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)

Несмотря на то, что я могу удалить сообщение об исключении Python, используя tryи except, я все равно хочу, чтобы cat: non-existing-file: No such file or directoryотображалось для пользователя.

Как мне это сделать?

shell():

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

    for line in finished:
      print line
    return
14
задан user1447941 18 August 2012 в 04:15
поделиться