2009-07-07 13 views
1

Ich werde damit beginnen zu sagen, dass ich Python sehr, sehr neu bin.Verwenden von Python zum Aufrufen von Mencoder mit einigen Argumenten

Ich hatte eine Windows/Dos Batch-Datei, um Mencoder mit den richtigen Parametern zu starten, ohne sie jedes Mal eingeben zu müssen.

Die Dinge wurden unordentlich, als ich versuchte, mein Skript zu verbessern, und ich entschied, dass es eine gute Gelegenheit wäre, etwas in Python zu programmieren.

Ich habe damit kommen:

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

Aber das funktioniert nicht, beschwert Fenster, dass „C: \ Program“ Befehl nicht erkannt wird.

Ich habe versucht, etwas „\“ „hier und da setzen, aber das half nicht.

+0

Dies kann ein Problem mit Fenstern sein. Ohne Anführungszeichen um den in und aus Dateinamen, der Befehl funktioniert. Danke für den Apostroph und „r“ Tipps, ich eine andere Frage stellen werde, wenn ich in eine interessanten laufen – Manu

+0

das ist komisch infile = 'holidays.avi' funktioniert, aber nicht infile = r '"holiday.avi"' – Manu

+0

... aber mencoder = r '"C: \ Program Fil (...)"' funktioniert gut. – Manu

Antwort

4

Python zwei Arten von Anführungszeichen hat,“ und "und sie sind völlig gleich. Der einfachste Weg, um Anführungszeichen in einer Zeichenfolge zu erhalten, ist "C: \ Programme \ MPlayer-1.0rc2 \ mencoder.exe".

Die Verwendung des rohen Präfix (dh r '"C: \ Programme \ MPlayer-1.0rc2 \ mencoder.exe"') ist eine gute Idee, aber das ist nicht der Fehler hier, da keiner der umgekehrten Schrägstriche gefolgt wird durch einen Buchstaben, der ein Escape-Code ist. Also würde sich deine ursprüngliche Saite überhaupt nicht ändern, wenn du ein r davor hast.

1

Verwenden Sie zwei Anführungszeichen anstelle von einem, wenn Sie unter Windows tun.

"\\" 
0

Sie können sogar die mencoder.exe in ein Verzeichnis einfügen, das kein Leerzeichen in seinem Namen enthält (im Gegensatz zu Programmdateien).

1

Ich bin neu in Python, aber ich weiß, wenn ich dieses Problem sehe, um es zu beheben, muss die Datei (ausführbare Datei oder Argument) in Anführungszeichen stehen. Fügen Sie einfach \“ vor und nach jeder Datei, die einen Platz in es enthält zwischen den Befehlszeilenargumenten zu unterscheiden. So, das auch auf Ihre outfile Variable gilt. Der Code sollte wie folgt aussehen ...

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