Я пытаюсь запустить команду ffmpeg для записи экрана с помощью модуля subprocess
. Все в порядке с этой линией:Как обрабатывать пробелы в bash через Python?
subprocess.Popen(["ffmpeg", "-video_size", GivenSizeOfScreen, "-framerate", GivenRateOfFrames, "-f", "x11grab", "-i", ":0.0", "-q", GivenQuality, GivenPathAndName])
что-то вроде file:///home/user/Videos/test.mp4
. Как я уже сказал, он работает. (Это в этой форме, потому что я получаю URI папки из виджета GTK).
Однако проблема заключается в том, что я выбираю папку с пробелами. Мне нравится file:///home/user/Documents/New Folder
. Это даст мне следующее сообщение об ошибке в терминале:
file:///home/user/Documents/New%20Folder/test.mp4: No such file or directory
Я знаю, что это из-Баша искажая пропуска. И что я могу запустить его с помещением \
перед пробелом, чтобы его решить. Однако мне не удалось найти способ сделать это с Python, отправив его в Bash.
не уверен, что это bash, так как вы не установили 'shell = True'. Можете ли вы попробовать без префикса 'file: //'? Я не понимаю, почему это не сработает. –
Похоже, ffmpeg принимает URL-адреса, но эта поддержка глючит. Баш здесь вообще не участвует; процесс запускается непосредственно Python без промежуточной оболочки. –
@ Jean-FrançoisFabre Я не хотел использовать shell = True, потому что это угроза безопасности. Удаление/установка файла: // ничего не изменило. – Madno