Использование 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).

Другие вопросы по тегам