Подпроцесс Python: как перенаправить вывод в файл

Чтобы перенаправить выходные данные подпроцесса Python в файл, вы можете использовать несколько методов. Вот несколько примеров:

Метод 1: использование перенаправления оболочки

import subprocess
with open('output.txt', 'w') as f:
    subprocess.run(['python', 'script.py'], stdout=f)

Метод 2: использование параметра stdoutsubprocess.Popen

import subprocess
with open('output.txt', 'w') as f:
    subprocess.Popen(['python', 'script.py'], stdout=f)

Метод 3: использование метода subprocess.PIPEи communicate()

import subprocess
with open('output.txt', 'w') as f:
    process = subprocess.Popen(['python', 'script.py'], stdout=subprocess.PIPE)
    output, _ = process.communicate()
    f.write(output.decode())

Метод 4. Использование параметра shell=True

import subprocess
with open('output.txt', 'w') as f:
    subprocess.run('python script.py > output.txt', shell=True)

Обратите внимание, что в этих примерах предполагается, что вы хотите перенаправить стандартный вывод подпроцесса в файл. Если вы хотите перенаправить стандартную ошибку или стандартный вывод и ошибку, вы можете соответствующим образом изменить примеры.