【问题标题】:Python Popen Cannot Find the File SpecifiedPython Popen 找不到指定的文件
【发布时间】:2013-10-11 11:56:34
【问题描述】:

我有以下代码

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

我尝试过的:

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

注意事项:

  • 文件位于映射的网络驱动器 (R) 上
  • 该文件的文件名中有空格,这就是我用引号括起来的原因。

我确定我错过了一些简单的东西。谁能指出我正确的方向?我在这个网站和其他网站上进行了大量搜索并尝试了建议。

【问题讨论】:

  • 除了在字符串中转义反斜杠之外,您还应该在pathToFile 周围去掉不必要的引号'"',并在Popen 调用中去掉不必要的参数shell=True

标签: python subprocess popen


【解决方案1】:

\ 符号在 python 中算作转义字符,使用 r 将其关闭:

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

【讨论】:

  • 这有帮助!现在它说“ffprobe.exe 不是内部或外部命令、可运行程序或批处理文件”。我已将 ffprobe: 放在同一目录中,将完整路径(前面带有 r)放入 ffprobe:(例如 C:\somefolder\ffprobe),将相对路径放在名称“.\ffprobe.exe”的前面, 将 ffprobe.exe 的副本放在 C:\Windows\System32 中,并确保该目录在 PATH 中,并在 'ffprobe.exe' 前面添加一个 'r' 以更好地衡量。它仍然不认识它。至少我移到了下一个错误。感谢您的帮助!
  • @cyram 您是否遇到了文件夹名称中的空格问题?
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 2016-03-17
相关资源
最近更新 更多