Tag: Подпроцесс

ffmpeg в подпроцессе Python – Невозможно найти подходящий формат вывода для 'pipe:'

Попытка записать субтитры в видео с помощью ffmpeg через Python. Работает нормально в командной строке, но при вызове из подпроцесса Python с: p = subprocess.Popen('cd ~/Downloads/yt/; ffmpeg -i ./{video} -vf subtitles=./{subtitles} {out}.mp4'.format(video=vid.replace(' ', '\ '), subtitles=subs, out='out.mp4'), shell=True) Я получил: Unable to find a suitable output format for 'pipe:' Полная трассировка: 'ffmpeg version 2.7.2 Copyright […]

Python Popen не может найти указанный файл

У меня есть следующий код pathToFile = "R:\T2 Output\12345–01–Some File 1–ABCD.mp4" process = subprocess.Popen(['ffprobe.exe', '-show_streams', '"'+pathToFile+'"'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) Я получаю сообщение об ошибке: [Error 2] The system cannot find the file specified То, что я пробовал: Изменение оболочки = True для оболочки = False Объединение команды в одну строку вместо использования списка (я даже […]

метод опроса subprocess.popen return None для длительного процесса

Я выполняю команду curl через подпроцесс. Эта команда curl запускает обработку видео на другом сервере и ожидает ответа. Как только процесс будет завершен, удаленный сервер вернет объект json. Я проверяю статус подпроцесса, используя значение poll (), которое равно None – процесс не завершен, 0 – успешно завершен процесс и 1- для ошибки. Я получаю правильный […]

Сохранить сообщение об ошибке команды subprocess

При запуске команды bash с использованием подпроцесса я могу столкнуться с ситуацией, когда команда недействительна. В этом случае bash вернет ошибку messsage. Как мы можем поймать это сообщение? Я хотел бы сохранить это сообщение в файле журнала. Ниже приведен пример, где я пытаюсь перечислить файлы в несуществующем каталоге. try: subprocess.check_call(["ls", "/home/non"]) df = subprocess.Popen(["ls", "/home/non"], […]

Как я могу спросить PIPE, сколько байтов доступно для чтения?

Я реализовал не-блокирующий читатель в Python, и мне нужно сделать его более эффективным. Фон: у меня есть огромные объемы вывода, которые мне нужно прочитать из одного подпроцесса (начатого с Popen ()) и перейти к другому потоку. Чтение вывода из этого подпроцесса не должно блокироваться более чем на несколько мс (желательно в течение как можно меньше […]

Python, перенаправляющий поток Popen на функцию python

Я новичок в программировании на питоне. У меня есть эта проблема: у меня есть список текстовых файлов (как сжатых, так и не), и мне нужно: – подключиться к серверу и открыть их – после открытия файла мне нужно взять его содержимое и передать его другому функция python, которую я написал def readLogs (fileName): f = […]

Subprocess.Popen () => Нет вывода

Я пытаюсь запустить скрипт Perl из Python, но я не получаю никакого вывода в stdout (), в то время как мой скрипт отлично работает, когда я запускаю его из оболочки. Во-первых, вот как я его запускаю из оболочки (предположим, что я нахожусь в правильном каталоге): ./vmlinkedclone.pl –server 192.168.20.2 –username root –password root –vmbase_id 2 –vm_destination_id […]

Subprocess.poll () ложно возвращает значение

test1.py: process = Popen(["python","test2.py"]) time.sleep(3) alive = process.poll() if alive is None: print "Still running" else: print "Not running\r\n" print "%r" % alive test1.py Выход: Not running 2 test2.py: time.sleep(30) print "done" Что происходит? Не должно ли это возвращение «все еще работать»? Из-за противоречивого результата вот полный код test1.py: import cStringIO import os import cgi […]

Как ограничить время выполнения программы при использовании подпроцесса?

Я хочу использовать подпроцесс для запуска программы, но мне нужно ограничить время выполнения. Например, если он длится более 2 секунд, я хочу его убить. Для обычных программ kill () работает хорошо. Но если я попытаюсь запустить /usr/bin/time something , kill () не может действительно убить программу. Но мой код ниже кажется не работает хорошо, программа […]

правильная привязка подпроцессов Popen

У меня есть такая конструкция, как: os.mkfifo('pipe.tmp') enc = Popen(['encoder', '-i', 'pipe.tmp']) cap = Popen(['capture', '-f', 'pipe.tmp']) здесь cap – это процесс, который обычно записывается в файл (указанный -f ), но я могу заставить его вытолкнуть данные на экран, предоставив /dev/stdout в качестве выходного файла. Аналогично, enc ожидает, что он прочитает файл-подобный объект, и я […]

Python - лучший язык программирования в мире.