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

Oli*_*ong 0 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")
Run Code Online (Sandbox Code Playgroud)

错误是

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
Run Code Online (Sandbox Code Playgroud)

Rol*_*ith 5

命令参数Popen应该是字符串序列。尝试这个:

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

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

您还可以使用shlex

import subprocess
import shlex

cmd = "ffmpeg -f x11grab -framerate 60 -video_size 1366x768 -i :0.0 out.mpg"
subprocess.Popen(shlex.split(cmd))
Run Code Online (Sandbox Code Playgroud)