我正在尝试编写一个基本上从终端捕获网络摄像头视频的 python 脚本。当我将命令放入字符串并使用 subprocess.call(script, True) 时,我收到错误,但是当我将相同的命令复制/粘贴到终端时,它工作正常。 p>
这是我的 python :
import subprocess
import os
if (os.path.isdir("Videos/Webcam/temp") is False):
dirmake = 'mkdir Videos/Webcam/temp'
subprocess.call(dirmake, True)
cmd = 'ffmpeg -f v4l2 -i /dev/video0 -t 00:00:10 video.webm'
subprocess.call(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 模块时,您通常会将命令作为字符串列表传递给它,而不是您希望运行的整个命令。
例如,您可以使用 subprocess.call(['ls'),而不是会出现错误的
subprocess.call('ls -l/my/dir')
, '-l', '/my/dir'])
关于python - 为什么我可以从终端运行此命令,但当我的 python 从终端为我运行它时却收到错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56067314/