Использование Python для вызова Mencoder с некоторыми аргументами

StackOverflow https://stackoverflow.com/questions/1090503

  •  11-09-2019
  •  | 
  •  

Вопрос

Я начну с того, что скажу, что я очень, очень новичок в 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" не распознана команда.

Я пытался поставить несколько "\"" тут и там, но это не помогло.

Это было полезно?

Решение

В Python есть два типа кавычек: " и", и они полностью равны.Таким образом, самый простой способ получить кавычки в строке - это сказать '"C:\Program Files\MPlayer-1.0rc2\mencoder.exe "'.

Использование необработанного префикса (т. Е. r'"C:\Program Files\MPlayer-1.0rc2\mencoder.exe "') - хорошая идея, но здесь это не ошибка, поскольку ни за одной из обратных косых черт не следует буква, являющаяся escape-кодом.Таким образом, ваша исходная строка вообще не изменилась бы, если бы перед ней стояла буква r.

Другие советы

используйте две кавычки вместо одной, если вы работаете в Windows.

"\\"

Я новичок в 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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top