"subprocess.run() wait for command to complete, then return a CompletedProcess instance", но я получаю желаемый результат с опозданием
Я изучаю django и столкнулся с этой проблемой.
Я использую subprocess.run(), но выходной файл, создаваемый им, опаздывает.
Вот фрагмент кода.
run(["gnome-terminal", "--", "sh", "-c", f"ffmpeg -i {video_name}_audio_stripped.mp4 -i {audio_name} -c:v copy -c:a aac {final_tutorial}"], cwd="media/")
#for i in range(1000000000):
# continue
run(["gnome-terminal", "--", "sh", "-c", f"ffmpeg -i {final_tutorial} -vcodec libx265 -crf 28 reduce_{final_tutorial}"], cwd="media/")
Как видите, второй run() использует выход первого run() в качестве входа, но хотя первый run() выполняется и возвращает экземпляр CompletedProcess, файл, сгенерированный им, создается с опозданием. Обратите внимание, что файл должен быть сгенерирован полностью для работы второго run(), поэтому, хотя первый run() генерирует файл, он не генерирует его полностью, то есть он генерирует его, но слишком поздно, поэтому второй run() не получает полный файл и не производит никакого вывода.
Я не могу понять это двусмысленное поведение, потому что согласно документации по Python subprocess.run выполняет команду, описанную args. Ждать завершения команды, затем возвращать экземпляр CompletedProcess.
Если я разкомментирую for loop
, чтобы добавить временную задержку, это работает, но я не думаю, что это правильный способ.
Может ли кто-нибудь помочь мне понять это двусмысленное поведение? Я новичок, и помощь будет оценена по достоинству.