2009-07-07 7 views
1

Je commencerai par dire que je suis très, très nouveau sur Python.Utiliser Python pour appeler Mencoder avec quelques arguments

J'avais l'habitude d'avoir un fichier batch Windows/Dos afin de lancer Mencoder avec le bon ensemble de paramètres, sans avoir à les taper à chaque fois. Les choses se sont mal passées quand j'ai essayé d'améliorer mon script, et j'ai décidé que ce serait une bonne occasion d'essayer de coder quelque chose en python.

Je suis venu avec ce que:

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

Mais cela ne fonctionne pas, les fenêtres se plaint que « C: \ Program » ne commande reconnu.

J'ai essayé de mettre un peu « \ » « ici et là, mais cela n'a pas aidé.

+0

Cela peut être un problème avec les fenêtres. sans les guillemets autour de la dans et hors des noms de fichiers, la commande fonctionne. Merci pour la citation unique et « r » des conseils, je vais poser une autre question si je rencontre un intéressant Problème: – Manu

+0

c'est bizarre. infile = 'holidays.avi' fonctionne, mais pas infile = r '"holidays.avi"' – Manu

+0

... bien que mencoder = r '"C: \ Program Fil (...)"' fonctionne bien. – Manu

Répondre

4

Python ont deux types de citations, » et "et ils sont tout à fait égaux. Le moyen le plus simple d'obtenir des guillemets dans une chaîne est de dire "C: \ Program Files \ MPlayer-1.0rc2 \ mencoder.exe". L'utilisation du préfixe brut (c'est-à-dire r '"C: \ Program Files \ MPlayer-1.0rc2 \ mencoder.exe"') est une bonne idée, mais ce n'est pas l'erreur ici, car aucune barre oblique inverse n'est suivie par une lettre qui est un code d'échappement. Donc votre chaîne d'origine ne changerait pas du tout en ayant un r devant elle.

1

Utilisez deux guillemets au lieu d'un si vous travaillez sous Windows.

"\\" 
0

Vous pouvez même placer mencoder.exe dans un répertoire qui n'a pas d'espace char à l'intérieur de son nom (par opposition à Program Files).

1

Je suis nouveau sur Python mais je sais quand je vois ce problème, pour le réparer, le fichier (exécutable ou argument) doit être entre guillemets. Il suffit d'ajouter \ » avant et après tout fichier qui contient un espace pour la différence entre les arguments de ligne de commande. Ainsi, qui s'applique à votre variable outfile ainsi. Le code devrait ressembler à ceci ...

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