我首先要说的是我对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”无法识别命令。
我试图在这里和那里放一些“\”,但这没有帮助。
答案 0 :(得分:4)
Python有两种类型的引号,“和'它们完全相同。所以在字符串中获取引号的最简单方法是说'”C:\ Program Files \ MPlayer-1.0rc2 \ mencoder.exe“'。
使用原始前缀(即r'“C:\ Program Files \ MPlayer-1.0rc2 \ mencoder.exe”)是一个好主意,但这不是错误,因为没有反斜杠后跟一封逃生码的信件。因此,你的原始字符串不会因为在它前面有一个r而改变。
答案 1 :(得分:1)
使用两个引号而不是一个引号。
"\\"
答案 2 :(得分: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()
答案 3 :(得分:0)
您甚至可以将mencoder.exe放入一个目录中,该目录的名称中没有空格字符(与Program Files相对)。