天天看點

bat循環執行 一秒一次_Windows實作Python腳本的定時執行

在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檔案,即可實作任務的自動執行。添加系統資料庫後的資訊如下圖所示,若想删除此啟動項,可進入圖示的目錄手動删除即可:

bat循環執行 一秒一次_Windows實作Python腳本的定時執行

添加的系統資料庫資訊

根據本文介紹的這種方法,不僅可以實作每天開機後自動執行某python腳本,也可實作在某個時間點自動執行python程式,提高自動化的處理能力。

若對您有幫助,歡迎大家評論、留言,私下可擷取源碼。