python实现电脑自动关机
初學python,想做一個自動關電腦的程序,到了晚上11點讓電腦自動關機,寫了一個簡單的python代碼。雖然只是一個簡單的功能,但是經歷了好幾次優化的過程
第一個過程:最簡單的實現定時關機的功能
from datetime import *
import os
tmNow = datetime.now()
d = date.today()
t = time(23,10,0)
shtdownTime = datetime.combine(d,t)
def ShutDown():
while True:
tmNow = datetime.now()
timedDelta = (shtdownTime - tmNow).total_seconds()
if timedDelta < 60:
os.system('shutdown -s -f -t 59')
break
else:
continue
if __name__ == '__main__':
ShutDown()
上面這個代碼已經實現了基本的自動關機功能。使用一個while循環實時監測當前時間距離關機時間還有多少秒,當距離關機時間<1分鐘的時候,執行關機的腳本os.system('shutdown -s -f -t 59')
第二個過程:給機主一個彈框提示
但是這樣不夠人性化,機主也許在工作有需要保存的工作沒有保存,這樣突然關機導致機主的代碼或者游戲進度丟失,所以我想在關機之前給機主一個彈框提示“我要關機了,趕快保存一下!”,這就需要使用win32api庫,調用Windows的鉤子函數彈出messageBox。改進之后的代碼如下:
1 from datetime import *
2 import os
3
4 tmNow = datetime.now()
5 d = date.today()
6 t = time(23,10,0)
7 shtdownTime = datetime.combine(d,t)
8
9 def ShutDown():
10 while True:
11 tmNow = datetime.now()
12 timedDelta = (shtdownTime - tmNow).total_seconds()
13 if timedDelta < 60:
14 win32api.MessageBox(win32con.NULL, u'還有59s關機,趕快保存一下!', u'溫馨提醒', win32con.MB_OK)
15 os.system('shutdown -s -f -t 59')
16 break
17 else:
18 continue
19
20 if __name__ == '__main__':
21 ShutDown()
相比第一段代碼只是新增了第15行 win32api.MessageBox(win32con.NULL, u'還有59s關機,趕快保存一下!', u'溫馨提醒', win32con.MB_OK),距離開機時間<1分鐘的時候,給出一個彈框提示。點擊確定按鈕開始執行關機腳本。
但是這樣又出現了一個問題,如果機主不點擊“溫馨提醒”對話框的確定按鈕,程序就永遠也不會執行關機腳本,這樣機主哪怕玩到夜里一兩點也不會自動關機了。所以就有了第三個過程的改進。
第三個過程:雙線程實現,一個線程用來彈出提醒框,另一個線程用來執行關機腳本,也就是我的最終代碼。代碼如下。
1 #coding=utf-8
2 "shutdown at 23:00"
3
4 from datetime import *
5 import os
6 import win32api
7 import win32con
8 from threading import *
9
10 tmNow = datetime.now()
11 d = date.today()
12 t = time(23,10,0)
13 shtdownTime = datetime.combine(d,t)
14
15 def ShowHint():
16 while True:
17 tmNow = datetime.now()
18 timedDelta = (shtdownTime - tmNow).total_seconds()
19 if timedDelta < 60:
20 win32api.MessageBox(win32con.NULL, u'還有59s關機,趕快保存一下!', u'溫馨提醒', win32con.MB_OK)
21 break
22 else:
23 continue
24 def ShutDown():
25 while True:
26 tmNow = datetime.now()
27 timedDelta = (shtdownTime - tmNow).total_seconds()
28 if timedDelta < 60:
29 os.system('shutdown -s -f -t 59')
30 break
31 else:
32 continue
33
34 if __name__ == '__main__':
35 threadShowHint = threading.Thread(target=ShowHint)
36 threadShutDown = threading.Thread(target=ShutDown)
37
38 threadShowHint.start()
39 threadShutDown.start()
View Code
總結
以上是生活随笔為你收集整理的python实现电脑自动关机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无限乱斗机器人ap出装_另类出装畅玩无限
- 下一篇: 的训练过程_指外翻的人在训练的过程中,要