python实现电脑自动关机
初學(xué)python,想做一個(gè)自動(dòng)關(guān)電腦的程序,到了晚上11點(diǎn)讓電腦自動(dòng)關(guān)機(jī),寫(xiě)了一個(gè)簡(jiǎn)單的python代碼。雖然只是一個(gè)簡(jiǎn)單的功能,但是經(jīng)歷了好幾次優(yōu)化的過(guò)程
第一個(gè)過(guò)程:最簡(jiǎn)單的實(shí)現(xiàn)定時(shí)關(guān)機(jī)的功能
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()
上面這個(gè)代碼已經(jīng)實(shí)現(xiàn)了基本的自動(dòng)關(guān)機(jī)功能。使用一個(gè)while循環(huán)實(shí)時(shí)監(jiān)測(cè)當(dāng)前時(shí)間距離關(guān)機(jī)時(shí)間還有多少秒,當(dāng)距離關(guān)機(jī)時(shí)間<1分鐘的時(shí)候,執(zhí)行關(guān)機(jī)的腳本os.system('shutdown -s -f -t 59')
第二個(gè)過(guò)程:給機(jī)主一個(gè)彈框提示
但是這樣不夠人性化,機(jī)主也許在工作有需要保存的工作沒(méi)有保存,這樣突然關(guān)機(jī)導(dǎo)致機(jī)主的代碼或者游戲進(jìn)度丟失,所以我想在關(guān)機(jī)之前給機(jī)主一個(gè)彈框提示“我要關(guān)機(jī)了,趕快保存一下!”,這就需要使用win32api庫(kù),調(diào)用Windows的鉤子函數(shù)彈出messageBox。改進(jìn)之后的代碼如下:
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關(guān)機(jī),趕快保存一下!', 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關(guān)機(jī),趕快保存一下!', u'溫馨提醒', win32con.MB_OK),距離開(kāi)機(jī)時(shí)間<1分鐘的時(shí)候,給出一個(gè)彈框提示。點(diǎn)擊確定按鈕開(kāi)始執(zhí)行關(guān)機(jī)腳本。
但是這樣又出現(xiàn)了一個(gè)問(wèn)題,如果機(jī)主不點(diǎn)擊“溫馨提醒”對(duì)話框的確定按鈕,程序就永遠(yuǎn)也不會(huì)執(zhí)行關(guān)機(jī)腳本,這樣機(jī)主哪怕玩到夜里一兩點(diǎn)也不會(huì)自動(dòng)關(guān)機(jī)了。所以就有了第三個(gè)過(guò)程的改進(jìn)。
第三個(gè)過(guò)程:雙線程實(shí)現(xiàn),一個(gè)線程用來(lái)彈出提醒框,另一個(gè)線程用來(lái)執(zhí)行關(guān)機(jī)腳本,也就是我的最終代碼。代碼如下。
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關(guān)機(jī),趕快保存一下!', 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
總結(jié)
以上是生活随笔為你收集整理的python实现电脑自动关机的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 无限乱斗机器人ap出装_另类出装畅玩无限
- 下一篇: win10此应用无法在你的电脑上运行怎么