为什么我可以从终端运行这个命令,但是当我的python为我从终端运行它时,我得到了一个错误?

为什么我可以从终端运行这个命令,但是当我的python为我从终端运行它时,我得到了一个错误?,python,ffmpeg,Python,Ffmpeg,我正在尝试编写一个python脚本,基本上可以从终端捕获网络摄像头视频。当我将命令放在字符串中并使用subprocess.call(script,True)时,我会得到一个错误,但当我将同一命令复制/粘贴到终端时,它工作正常 这是我的python: 导入子流程 导入操作系统 如果(os.path.isdir(“视频/网络摄像头/临时”)为False): dirmake='mkdir视频/网络摄像头/temp' 子进程调用(dirmake,True) cmd='ffmpeg-f v4l2-i/de

我正在尝试编写一个python脚本,基本上可以从终端捕获网络摄像头视频。当我将命令放在字符串中并使用
subprocess.call(script,True)
时,我会得到一个错误,但当我将同一命令复制/粘贴到终端时,它工作正常

这是我的python:

导入子流程
导入操作系统
如果(os.path.isdir(“视频/网络摄像头/临时”)为False):
dirmake='mkdir视频/网络摄像头/temp'
子进程调用(dirmake,True)
cmd='ffmpeg-f v4l2-i/dev/video0-t 00:00:10 video.webm'
子进程调用(cmd,True)
这就是错误所在

`FileNotFoundError: [Errno 2] No such file or directory: 'ffmpeg -f v4l2 -i /dev/video0 -t 00:00:10 video.webm': 'ffmpeg -f v4l2 -i /dev/video0 -t 00:00:10 video.webm'`
如果我只是在终端上运行
ffmpeg-f v4l2-I/dev/video0-t 00:00:10 video.webm
,它工作正常


本来视频应该放在Videos/Webcam/temp中,但我把它拿出来看看错误是否与我放视频的位置有关。如果有区别的话,我使用的是Ubuntu 18.04.2 LTS。

使用子流程模块时,您通常会将命令作为字符串列表传递给它,而不是希望运行的整个命令

例如,您可以使用
subprocess.call(['ls'、'-l'、'/my/dir'])
,而不是
subprocess.call(['ls'、'-l'、'/my/dir'])


使用
shell=True
,而不仅仅是
True
,我认为子进程需要字符串列表,而不是单个字符串。