日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

python实现电脑自动关机

發(fā)布時(shí)間:2023/12/19 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 python实现电脑自动关机 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

初學(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。