python - 如何在 If 语句中发出通知但在 Python 中继续 While 循环?
问题描述
当我使用电池电源或交流电源时,我正在使用 psutil 和 Python 来通知我。我有一个持续检查电池电量的while循环。我希望它在我们使用电池电源时通知我,但只有一次。如果我在任何地方声明变量 power_notification = 0,那么当 while 循环再次运行时,它将重置为 0。我如何保持计数,以便在我们重新使用 AC 之前它只通知我一次?我没有收到任何错误,但它会不断打印出我们正在使用电池供电。
import psutil
power_good = True
def check_power_status():
power_notification = 0
battery = psutil.sensors_battery()
plugged_in = battery.power_plugged
percent = str(battery.percent)
if not plugged_in:
if power_notification == 0:
plugged_in = "We are on battery power."
print(plugged_in + "\n" + "You have " + percent + "% of your battery remaining.")
power_notification = 1
else:
power_good = False
return power_good
else:
power_good = True
return power_good
while power_good:
check_power_status()
解决方案
你需要让它一直运行,因为它daemon
应该while
一直运行True
。所以我看不出任何使用power_good
.
power_notification
应该在函数之外保持它的值。
import psutil
power_notification = 0
def check_power_status():
global power_notification
battery = psutil.sensors_battery()
plugged_in = battery.power_plugged
percent = str(battery.percent)
if not plugged_in:
if power_notification == 0:
plugged_in = "We are on battery power."
print(plugged_in + "\n" + "You have " + percent + "% of your battery remaining.")
power_notification = 1
#AC plugged_in
else:
power_notification = 0
while True:
check_power_status()
推荐阅读
- matlab - 如何在 matlab 中证明 randperm() 是公平的
- c# - 将枚举属性名称与字符串匹配
- categories - 允许多项选择,而不仅仅是一个
- javascript - 使用 TypeScript 的手风琴
- laravel - 按条件排序
- php - PHP MYSQL 运行查询两次
- excel - 使用 twapi 将 Excel 工作表从一个工作簿复制到另一个工作簿
- dart - Flutter - BLoC 模式 - 如何使用流来调用另一个小部件的方法,即动画?
- c# - 获取正在运行的进程的唯一 ID
- android - 将 OnClickListener 动态分配给自定义布局