Ответ 1
import subprocess
f = open(r'c:\temp\temp.txt','w')
subprocess.call(['dir', r'c:\temp'], shell=True, stdout=f)
f.close()
В моем коде у меня есть строка, подобная этой:
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
все еще имеет код возврата?
import subprocess
f = open(r'c:\temp\temp.txt','w')
subprocess.call(['dir', r'c:\temp'], shell=True, stdout=f)
f.close()
Модуль subprocess имеет встроенную функцию check_output для этого:
In [11]: result = subprocess.check_output(['pwd'])
In [12]: print result
/home/vagrant
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, потому что он генерирует исключение, если код возврата не равен нулю:)