2016-12-31 148 views
0

你好,我不能讓我的腳本運行它是爲了蒸發我的屏幕實時通過HTTP,但它出現了一個錯誤,我似乎無法修復。Python子進程錯誤沒有這樣的文件或目錄

#!/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

那麼,有什麼錯誤? – 101

回答

2

Popen命令的參數應該是字符串的序列。 試試這個:

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

注意,包含命令名稱的第一個字符串應該包含任何空格!如果你使用「ffmpeg」(注意最後的空格)而不是「ffmpeg」,它會再次失敗,出現「no such file or directory」錯誤,因爲沒有名稱爲「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)) 
+0

一個奇妙的答案,我是如此盲目。 –

+0

@Krazor我們都犯過這個錯誤。 :-) –

+0

是的。讓我們把它歸咎於一個錯誤的不直觀的標準庫。是啊。 +1 –

相關問題