Windows环境下Python psutil模块充电状态检测脚本输出不更新问题求助
解决充电状态告警系统输出不更新的问题
嗨,我来帮你捋捋这个问题~你现在遇到的核心问题是脚本只在启动时获取了一次电池状态,之后再也没有更新过,所以不管你插拔多少次充电器,输出都不会跟着变。
问题分析
先看你的代码:
import psutil # 这行只在脚本启动时执行一次,battery里存的是当时的旧数据 battery = psutil.sensors_battery() def test(): to = battery.power_plugged if to: print("good") to = battery.power_plugged if not to: print("bad") to = battery.power_plugged while True: test()
battery = psutil.sensors_battery()这行写在函数外面,只会运行一次。之后每次调用test(),都是在检查这个早就固定下来的battery.power_plugged值,自然没法反映你后续插拔充电器的变化。
修复方案
只需要把获取电池状态的代码移到test()函数内部,让每次调用函数时都重新读取最新的系统状态就行:
import psutil def test(): # 每次检查前都重新拉取最新的电池数据 battery = psutil.sensors_battery() if battery.power_plugged: print("good") else: print("bad") while True: test()
额外优化建议
上面的代码虽然能正常工作,但无限循环会疯狂占用CPU资源,建议加个延迟,比如每秒检查一次:
import psutil import time def test(): battery = psutil.sensors_battery() # 可以把输出弄的更直观些 status = "good(充电器已连接)" if battery.power_plugged else "bad(充电器未连接)" print(status) while True: test() time.sleep(1) # 间隔1秒检查一次,降低CPU占用
这样修改后,你插拔充电器的时候,脚本的输出就会实时更新啦~
内容的提问来源于stack exchange,提问作者eyyad
相关产品推荐
相关产品推荐

