Є два способи зробити переадресацію. Обидва стосуються subprocess.Popenабо subprocess.call.
Встановіть аргумент ключового слова shell = Trueабо executable = /path/to/the/shellвкажіть команду так само, як у вас є.
Оскільки ви просто переспрямовуєте вихід у файл, встановіть аргумент ключового слова
stdout = an_open_writeable_file_object
де об’єкт вказує на outputфайл.
subprocess.Popenє більш загальним, ніж subprocess.call.
Popenне блокується, що дозволяє взаємодіяти з процесом під час його запуску або продовжувати роботу з іншими речами вашої програми Python. Заклик Popenповернути Popenоб'єкт.
call робить блок. Хоча він підтримує всі ті ж аргументи, що і Popenконструктор, тому ви все ще можете встановити вихідний процес, змінні середовища тощо, ваш сценарій чекає завершення програми і callповертає код, що представляє статус виходу процесу.
returncode = call(*args, **kwargs)
в основному те саме, що дзвонити
returncode = Popen(*args, **kwargs).wait()
call- це лише функція зручності. Його реалізація в CPython знаходиться в subprocess.py :
def call(*popenargs, timeout=None, **kwargs):
"""Run command with arguments. Wait for command to complete or
timeout, then return the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
retcode = call(["ls", "-l"])
"""
with Popen(*popenargs, **kwargs) as p:
try:
return p.wait(timeout=timeout)
except:
p.kill()
p.wait()
raise
Як бачите, це тонка обгортка навколо Popen.
call()здається дуже чітким. Чи можете ви надати цитату чи посилання, щоб ми знали, на що звернути увагу у відповіді?