【问题标题】:Execute terminal commands in python3 [duplicate]在python3中执行终端命令[重复]
【发布时间】:2016-04-05 19:02:18
【问题描述】:

我在 Raspberry Pi 上,我正在使用一个名为 fswebcam 的程序,它允许您使用网络摄像头拍照。

~$ fswebcam image.jpg

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

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

如何让 python 执行终端命令?

【问题讨论】:

  • 请显示您尝试过的一些实际代码以及您遇到的错误。
  • 这是你想要的吗? stackoverflow.com/questions/89228/…
  • @KevinGuan 可能。但是subprocess 模块是首选。
  • 术语说明:终端是交互式程序使用的设备(可能是窗口中显示的虚拟设备),最显着的是交互式命令解释器(称为 shell 在 Unix 术语中)。 os.system 通常使用相同的 shell,但处于非交互模式。所以,fswebcam image.jpg 是一个 shell 命令,但它与 terminal 无关。
  • 什么是type fswebcamcommand -v fswebcam? (在 shell 中输入命令)

标签: python python-3.x raspberry-pi subprocess raspbian


【解决方案1】:

使用子流程模块:

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

【讨论】:

  • 如果os.system('fswebcam image.jpg') 不起作用(例如,因为fswebcam 是仅在交互式shell 中可用的别名),那么subprocess.Popen(["fswebcam", "image.jpg"]) 也无济于事。要等待命令完成,请使用 subprocess.check_call() 而不是 Popen()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 2020-09-03
  • 1970-01-01
  • 2015-05-27
  • 2016-12-06
  • 2014-07-03
相关资源
最近更新 更多