Python子进程错误没有这样的文件或目录

时间:2016-12-31 09:42:55

标签: python subprocess

您好我无法让我的脚本运行它是为了通过HTTP实时播放我的屏幕,但它出现了一个我似乎无法解决的错误。

#!/bin/python
import subprocess
import threading

try:
    subprocess.Popen("rm out.mpg")
except OSError:
    pass

subprocess.Popen("ffmpeg -f x11grab -framerate 60 -video_size 1366x768 -i :0.0 out.mpg")
subprocess.Popen("python -m SimpleHTTPServer 8000 out.mpg")

错误是

Traceback (most recent call last):
  File "Streaming.py", line 11, in <module>
    subprocess.Popen("ffmpeg -f x11grab -framerate 60 -video_size 1366x768 -i :0.0 out.mpg")
  File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.7/subprocess.py", line 1343, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

1 个答案:

答案 0 :(得分:4)

Popen的命令参数应该是一系列字符串。 试试这个:

import subprocess
subprocess.Popen(["ffmpeg", "-f", "x11grab", 
                  "-framerate", "60", "-video_size",
                  "1366x768", "-i", ":0.0", "out.mpg"])

请注意,包含命令名称的第一个字符串 not 应包含任何空格!如果你愿意使用&#34; ffmpeg&#34; (注意末尾的空格)而不是&#34; ffmpeg&#34;如果没有这样的文件或目录,它将再次失败&#34;错误,因为没有名称为&#34; ffmpeg&#34;!

的命令

您也可以使用shlex

import subprocess
import shlex

cmd = "ffmpeg -f x11grab -framerate 60 -video_size 1366x768 -i :0.0 out.mpg"
subprocess.Popen(shlex.split(cmd))
相关问题