2013-10-11 25 views
6

我有以下代码Python的POPEN无法找到指定的文件

pathToFile = "R:\T2 Output\12345--01--Some File 1--ABCD.mp4" 
process = subprocess.Popen(['ffprobe.exe', '-show_streams', '"'+pathToFile+'"'], 
    shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 

我得到的错误:

[Error 2] The system cannot find the file specified 

我曾尝试:

  • 更改壳= True以shell = False
  • 将命令组合成单个字符串而不是使用列表(我甚至是pri nt它屏幕,我可以复制并粘贴到文件运行的命令提示符,并给出预期的输出(无错误)
  • 我确保ffprobe.exe位于PATH中,并可以从命令执行不指定目录注意

东西线:

  • 该文件位于映射网络驱动器(R)
  • 该文件在文件名空间上,这就是为什么我包围它通过引号。

我确定我错过了一些简单的东西。任何人都可以将我指向正确的方向吗?我在本网站和其他网站上进行了大量搜索,并尝试提出建议。

+0

字符串逃脱反斜线,你应该删除不必要的引号'“''左右'pathToFile ''在'Popen'调用中删除不必要的参数'shell = True' – jfs

回答

3

\符号计数为蟒蛇转义字符,使用r把它们关掉:除了

pathToFile = r"R:\T2 Output\12345--01--Some File 1--ABCD.mp4" 
+0

这有帮助!现在它说“ffprobe.exe不被识别为内部或外部命令,可操作程序或批处理文件。” 我已经把ffprobe:在相同的目录中,将完整路径(前面带r)放在ffprobe中:(例如C:\ somefolder \ ffprobe),将相对路径放在名称为“。\ ffprobe.exe”,将ffprobe.exe的副本放在C:\ Windows \ System32中,并确保该目录位于PATH中,并在“ffprobe.exe”前添加了'r'测量。 它仍然无法识别它。至少我转向了下一个错误。谢谢您的帮助! – cyram

+0

@cyram是否遇到了文件夹名称中空格的问题? –

相关问题