使用Python调用Mencoder并传递参数
我先说一下,我对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”不是一个被识别的命令。
我试着在这里那里加了一些“\",但这并没有帮助。
4 个回答
1
我刚开始学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()
1
如果你在Windows上操作,使用两个引号而不是一个引号。
"\\"
4
在Python中,有两种类型的引号,分别是双引号(")和单引号('),它们是完全一样的。所以在字符串中使用引号的最简单方法就是这样写:'"C:\Program Files\MPlayer-1.0rc2\mencoder.exe"'。
使用原始字符串前缀(也就是在字符串前加个r,比如r'"C:\Program Files\MPlayer-1.0rc2\mencoder.exe"')是个好主意,但在这里并不是错误,因为没有任何反斜杠后面跟着字母形成转义字符。所以你原来的字符串加上r前缀后是不会有任何变化的。