Question

Je commencerai par dire que je suis très, très nouveau pour Python.

Je l'habitude d'avoir un fichier de commandes de Windows / Dos afin de lancer Mencoder avec le droit ensemble de paramètres, sans avoir à les saisir à chaque fois.

Les choses se salissant quand j'ai essayé d'améliorer mon script, et moi avons décidé que ce serait une bonne occasion d'essayer quelque chose de codage 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

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

Était-ce utile?

La solution

Python ont deux types de citations, "et". Et ils sont complètement égaux donc plus simple d'obtenir des citations dans une chaîne est-à-dire "C: \ Program Files \ MPlayer-1.0rc2 \ mencoder.exe".

En utilisant le préfixe brut (ie r ' « C: \ Program Files \ MPlayer-1.0rc2 \ mencoder.exe ») est une bonne idée, mais ce n'est pas l'erreur ici, car aucun des anti-slash sont suivis une lettre qui est un code d'échappement. Ainsi, votre chaîne d'origine ne changerait pas du tout en ayant un r devant elle.

Autres conseils

utiliser deux citations au lieu d'un si vous faites sur les fenêtres.

"\\"

Je suis nouveau à Python, mais je sais que chaque fois que je vois ce problème, de le corriger, 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()

Vous pouvez même mettre le mencoder.exe dans un répertoire qui ne dispose pas d'un caractère d'espace à l'intérieur de son nom (plutôt que Program Files).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top