Требуется целый день, чтобы понять, почему это не работает.Это с Python 3.6.
Цель состоит в том, чтобы захватить прогресс из командной строки, крошка в качестве примера.Шред будет выводить построчно прогресс.
При использовании подпроцесса Python невозможно сохранить какой-либо вывод в файл.Я сделал это:
cmd_str="sudo shred -v /dev/sde"
f="/test.log"
with Popen(cmd_str, stdout=f, bufsize=1, universal_newlines=True) as p:
for line in p.stdout:
print(line, end='')
Но он выдал ошибку, говорящую: FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'sudo shred -v / dev / sde': 'sudo shred -v / dev/ sde ', который не имеет смысла для меня.
Проще говоря, я хочу добавить новую строку вывода в файл и закрыть его.Таким образом, внешняя программа может проверить файл журнала, чтобы увидеть, как идет работа.
Я только что заметил, что когда я использую tee, чтобы увидеть, регистрируется ли он, и он не входит в файл, несмотря на создание файла журнала.
ОБНОВЛЕНИЕ: Я испробовал все возможные решения на этом сайте, но ничего не получалось.Я начинаю думать, связано ли это с тем фактом, что это индикатор выполнения, который нельзя отправить на стандартный вывод?Они были опробованы и пока не работали:
оперативный вывод команды подпроцесса
Постоянная печать вывода подпроцесса во время выполнения процесса