Pergunta

Vou começar por dizer que estou muito, muito novo para Python.

Eu costumava ter um arquivo de lote do Windows / Dos para lançar Mencoder com o direito conjunto de parâmetros, sem ter que digitá-los cada vez.

As coisas ficaram confuso quando tentei melhorar meu script, e eu decidi que seria uma boa oportunidade para tentar codificação algo em python.

Eu vim com isso:

#!/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() 

Mas isso não trabalho, janelas reclama que "C: \ Program". Não é reconhecido comando

Eu tentando colocar algum "\"" aqui e ali, mas isso não ajuda.

Foi útil?

Solução

Python têm dois tipos de citações, "e". E eles são completamente iguais caminho Então, mais fácil de obter cotações de uma série é para dizer ' 'C: \ Program Files \ MPlayer-1.0rc2 \ mencoder.exe''.

Usando o prefixo raw (ie r ' 'C: \ Program Files \ MPlayer-1.0rc2 \ mencoder.exe'') é uma boa idéia, mas isso não é o erro aqui, como nenhuma das barras invertidas são seguidos por uma carta que é um código de escape. Portanto, o seu string original não muda em nada por ter um r na frente dele.

Outras dicas

usar duas citações em vez de um, se você está fazendo em janelas.

"\\"

Eu sou novo para Python, mas eu sei sempre quando eu vejo esse problema, corrigi-lo, o arquivo (executável ou argumento) deve estar entre aspas. Basta adicionar \ " antes e depois de qualquer arquivo que contém um espaço nele para diferenciar entre os argumentos de linha de comando. Então, isso se aplica a sua variável outfile bem. O código deve olhar como esta .. .

#!/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()

Você pode até mesmo colocar o mencoder.exe em um diretório que não tem um char espaço dentro do nome (contrário de Arquivos de Programas).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top