@PesyCorm

Почему не работает перенаправление вывода в файл (subprocess Python)?

Подскажите, почему этот код не работает?
>>> x = subprocess.Popen('ls 1>logs.log 2>err.log'.split(), shell=True)
>>> x.poll()
0

Я пытаюсь перенаправить вывод выполнения команды в файл, чтобы не городить код (перехватывать вывод в subprocess.PIPE, а после записывать это в файл)
Судя по коду возврата, команда выполнилась, но в директории, где выполнял скрипт файлов с логами нет

UPD: просто нужно было убрать .split() в команде и передавать ее как одну строку
  • Вопрос задан
  • 293 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
(перехватывать вывод в subprocess.PIPE, а после записывать это в файл)

Просто укажи в качестве stdout и stderr открытые на запись файловые объекты, Popen() сделает всё остальное.
Кода буквально две строчки, а бонусом нормальные исключения при ошибке доступа, плюс можно использовать tempfile.NamedTemporaryFile(), если файлы должны быть временными, а не постоянными.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы