Я использую модуль 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