1

对不起,我是编程初学者。我遇到了一个问题,我无法以预期的方式完成脚本。

预期:此 python 脚本将识别服务 [Webmin] 当前是否处于活动状态,然后打开对应于 GPIO.pinout 的灯。 (如果服务处于活动状态,则灯将亮起,否则将关闭)

现在的问题:当我运行脚本时,脚本将在命令行界面中不断返回“活动”,并且灯不会打开。我试图修改os.system('systemctl is-active webmin')os.system('systemctl is-active --quiet webmin')静音输出,但灯仍然不起作用。

请帮我检查是否有代码错误,我试图用谷歌搜索类似的信息和解决方案,但它对我帮助不大。先感谢您。

#!/usr/bin/env python
import RPi.GPIO as GPIO
import os
import time

GREEN = 26
YELLOW = 19
RED = 13

# Pin Setup:
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(GREEN, GPIO.OUT)
GPIO.setup(YELLOW, GPIO.OUT)
GPIO.setup(RED, GPIO.OUT)


while True:

        check = os.system('systemctl is-active webmin')
        match = ('active')
        if check == match:
                GPIO.output(RED, True)
                time.sleep (1)

        else:
                GPIO.output(RED, False)
                GPIO.output(YELLOW, False)
                GPIO.output(GREEN, False)
4

1 回答 1

1

使用os.system()只会给你返回命令的错误代码,而不是命令的结果。如文档中所述os.system(),您应该考虑使用subprocess模块来运行操作系统命令并检索它们的结果。

import subprocess
check = subprocess.run(["systemctl", "is-active", "webmin"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if check.stdout == b"active":  # Your result may end in a newline: b"active\n"
    print("Webmin is active!")
于 2020-03-16T03:53:00.143 回答