Подтвердить что ты не робот

В сценариях Python, как я могу получить вывод из файла subprocess.call в файл

В моем коде у меня есть строка, подобная этой:

rval = subprocess.call(["mkdir",directoryName], shell=True)

и я могу проверить rval, чтобы увидеть, есть ли он 0 или 1, но если это 1, я хотел бы иметь текст из команды "A subdirectory or file ben already exists." в формате файла, поэтому Я могу сравнить его с другим файлом, если хочу, чтобы текст был тем же.

Возможно ли иметь такую ​​строку, но я знаю, что это не работает.

rval = subprocess.call(["mkdir",directoryName], shell=True) >> filename

так что независимо от того, что происходит с командой, текст записывается в filename, а rval все еще имеет код возврата?

4b9b3361

Ответ 1

import subprocess
f = open(r'c:\temp\temp.txt','w')
subprocess.call(['dir', r'c:\temp'], shell=True, stdout=f)
f.close()

Ответ 2

Модуль subprocess имеет встроенную функцию check_output для этого:

In [11]: result = subprocess.check_output(['pwd'])

In [12]: print result
/home/vagrant

Ответ 3

import subprocess

try:
    result = subprocess.check_output(['dir', r'c:\temp'], shell=True)
    print result
except subprocess.CalledProcessError as e:
    return_code = e.returncode

В любом случае вам нужно использовать try catch, потому что он генерирует исключение, если код возврата не равен нулю:)