在Python3中执行终端命令

43

我正在使用树莓派,并且使用一个叫做 fswebcam 的程序,它可以让你使用网络摄像头拍照。

~$ fswebcam image.jpg

输入该命令将拍照并将其保存到计算机上,但我想构建一个简单的Python程序,可以访问终端并执行与上面列出的相同的命令。

我尝试使用import os并使用os.system('fswebcam image.jpg'),但对我没有起作用。

如何让Python执行终端命令?


5
请提供你尝试过的实际代码以及你遇到的错误。 - Daniel Roseman
9
这是你想要的吗?https://dev59.com/SnVD5IYBdhLWcg3wGXlI - Jezzamon
1
@KevinGuan 可能是这样。然而,使用“subprocess”模块更为推荐。 - cdonts
1
术语说明:_终端_是交互式程序使用的设备(可能是在窗口中显示的虚拟设备),最著名的是交互式命令解释器(在Unix术语中称为_shell_)。os.system通常使用相同的shell,但处于非交互模式。因此,fswebcam image.jpg是一个_shell命令_,但与_terminal_无关。 - Sergey Salnikov
什么是 type fswebcamcommand -v fswebcam?(在 shell 中输入命令) - jfs
1个回答

24

使用subprocess模块:

import subprocess
subprocess.Popen(["fswebcam", "image.jpg"])

2
如果 os.system('fswebcam image.jpg') 无法工作(例如,因为 fswebcam 是仅在交互式 shell 中可用的别名),那么 subprocess.Popen(["fswebcam", "image.jpg"]) 也无法帮助。要等待命令完成,请改用 subprocess.check_call() 而不是 Popen() - jfs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接