在Linux作業系統下,可以通過crontab指令來實作任務的定時執行。那麼在Windows系統下,如何實作這一功能呢?其實非常簡單,隻需要采用向系統資料庫添加啟動項,來執行批處理程式的思路。
1、F:autodemo目錄下建立一個python檔案,命名為autorun.py,主要利用python自帶的sched子產品來建立一個定時任務。定時任務通過os.system()方法來執行指令。需要注意的是,多個CMD指令之間使用&&符号進行連接配接,三個指令"F: && cd F:Python源程式est && python main.py"分别表示:切換F盤;切換main.py對應的路徑;執行main.py腳本。
#定時執行任務指令import time,os,schedschedule = sched.scheduler(time.time,time.sleep) # #生成排程器def command(cmd): os.system(cmd) # 執行指令 print('任務執行完成!')def task(cmd,inc=60): schedule.enter(inc,0,command,(cmd,)) schedule.run() # 運作調試器task(r"F: && cd F:Python源程式est && python main.py",60)
sched子產品實作了一個通用事件排程器,在排程器類使用一個延遲函數等待特定的時間,執行任務。同時支援多線程應用程式,在每個任務執行後會立刻調用延時函數,以確定其他線程也能執行。
1)延遲運作事件
在一個延遲或規定時間之後執行事件,需要采用enter()方法,包含4個參數:
間隔時間(具體值決定與delayfunc, 這裡為秒)
優先級(兩個事件在同一時間到達的情況)
調用的函數
函數參數
2)重疊事件
調用run()塊執行所有的事件。每個事件都在同一線程中運作,是以如果一個事件需要更長的時間,延遲事件将會有重疊。為了不丢失事件,延遲事件将會在之前事件運作完再被執行,但一些延遲事件可能會晚于原本計劃的事件。
2、建立一個bat批處理程式,用來執行上面的autorun .py源檔案。在這裡将bat檔案存儲到F盤根目錄,将bat程式命名為run.bat。
python F:autodemoautorun.pypause
3、建立一個python檔案,這裡命名為automain.py,主要是在系統系統資料庫中添加自動運作的啟動項,實作開機後程式自動執行批處理檔案。
import win32api # 需要安裝win32com子產品,指令為:pip install pywin32import win32con # 導入win32con子產品,該子產品包含在win32com中 name = 'auto run python' # 要添加的項值名稱(支援中文)path = r'F:un.bat' # 要執行程式的絕對路徑# 系統資料庫項名KeyName = 'SoftwareMicrosoftWindowsCurrentVersionRun'# 異常處理try: # 打開鍵 key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, KeyName, 0, win32con.KEY_ALL_ACCESS) # 打開鍵 win32api.RegSetValueEx(key, name, 0, win32con.REG_SZ, path) # 寫入鍵值 win32api.RegCloseKey(key) # 關閉鍵except Exception as e: print('error',e) # 輸出異常資訊else: print('添加成功!')
在這裡,我們隻需要執行一次automain.py檔案,即可實作任務的自動執行。添加系統資料庫後的資訊如下圖所示,若想删除此啟動項,可進入圖示的目錄手動删除即可:
添加的系統資料庫資訊
根據本文介紹的這種方法,不僅可以實作每天開機後自動執行某python腳本,也可實作在某個時間點自動執行python程式,提高自動化的處理能力。
若對您有幫助,歡迎大家評論、留言,私下可擷取源碼。