Использование Python для вызова Mencoder с некоторыми аргументами
Начну с того, что я очень, очень плохо знаком с Python.
Раньше у меня был пакетный файл Windows/Dos для запуска Mencoder с правильным набором параметров, без необходимости каждый раз вводить их.
Когда я попытался улучшить свой сценарий, все пошло не так, и я решил, что это хорошая возможность попробовать что-то написать на python.
Я придумал это:
#!/usr/bin/python
import sys, os
#Path to mencoder
mencoder = "C:\Program Files\MPlayer-1.0rc2\mencoder.exe"
infile = "holidays.avi"
outfile = "holidays (part1).avi"
startTime = "00:48:00"
length = "00:00:15"
commande = "%s %s -ovc copy -oac copy -ss %s -endpos %s -o %s"
os.system(commande % (mencoder, infile, startTime, length, outfile))
#Pause
raw_input()
Но это не работает, Windows жалуется, что "C:\Program" не распознанная команда.
Я пытаюсь поместить кое-что "\""здесь и там, но это не помогло.
4 ответа
В Python есть два типа кавычек: "и", и они полностью равны. Поэтому самый простой способ получить кавычки в строке - это сказать "C:\Program Files\MPlayer-1.0rc2\mencoder.exe" ".
Использование необработанного префикса (т. Е. R '"C:\Program Files\MPlayer-1.0rc2\mencoder.exe"') является хорошей идеей, но здесь это не ошибка, поскольку ни одна из обратных косых черт не сопровождается буквой, это escape-код. Таким образом, ваша исходная строка не изменится, если перед ней появится буква r.
Я новичок в Python, но я знаю, что когда я вижу эту проблему, чтобы ее исправить, файл (исполняемый файл или аргумент) должен быть в кавычках. Просто добавьте \" до и после любого файла, в котором есть пробел, чтобы различать аргументы командной строки. Итак, это относится и к вашей переменной outfile. Код должен выглядеть следующим образом...
#!/usr/bin/python
import sys, os
#Path to mencoder
mencoder = "\"C:\Program Files\MPlayer-1.0rc2\mencoder.exe\""
infile = "holidays.avi"
outfile = "\"holidays (part1).avi\""
startTime = "00:48:00"
length = "00:00:15"
commande = "%s %s -ovc copy -oac copy -ss %s -endpos %s -o %s"
os.system(commande % (mencoder, infile, startTime, length, outfile))
#Pause
raw_input()
Используйте две кавычки вместо одной, если вы делаете на окнах.
"\\"
Вы даже можете поместить mencoder.exe в каталог, в котором нет пробела внутри имени (в отличие от Program Files).