python 每天定时运行程序(傻瓜式倒计时)
生活随笔
收集整理的這篇文章主要介紹了
python 每天定时运行程序(傻瓜式倒计时)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import time
from datetime import datetime, timedeltadef run_your_script(): # 自定義需要定時運行的函數print("\n程序運行中。")def countdown(deltaT, time_set):# deltaT: float, 剩余的時間# time_set: datetime object, 設定的時間print("\n調用程序的固定時間為:", time_set)while deltaT:minutes, seconds = divmod(deltaT, 60) # 分鐘數為deltaT?60的商部分,秒鐘數為余數部分hours = minutes // 60 # 小時數: 分鐘數除以60的商minutes -= hours * 60 # 分鐘數:分鐘數減去小時*60# 以上做法的目的:將時分秒都化為0-60內的數字,美觀。timeformat = '{:02d}:{:02d}:{:02d}'.format(hours, minutes, seconds)print("距離下次調用的剩余時間為:", timeformat, end='\r') # '\r'確保光標在起始位置,使得剩余時間不會一行行輸出,美觀time.sleep(1) # 停頓一秒deltaT -= 1 # 時間減少一秒run_your_script()# 以下設定的時間可由用戶輸入或配置文件提供,注意字符串與整型的類型轉換
HOUR = 21
MINUTE = 15
SECOND = 0while True:now = datetime.now() # 獲取現在的時間time_set = now.replace(hour = HOUR, minute = MINUTE, second = SECOND) # 設置的時間# 如果現在的鐘面時間(不考慮日期)早于設定的時間,時間差為:較晚時間減去較早時間# 比如現在的時間是8am,而設定的時間是9am,那么時間差為1小時if now < time_set:deltaT = (time_set - now).total_seconds() # 單位:秒# 如果現在的鐘面時間(不考慮日期)不早于設定的時間,時間差為:24小時減去上述時間差# 比如現在的時間是9am,而設定的時間是8am,那么時間差為23小時(24-(9-8))else: time_set = now.replace(day=now.day+1, hour=HOUR, minute=MINUTE, second=SECOND)# 既然已經過了設定時間,那么日期應為第二天deltaT = (timedelta(hours=24) - (now - now.replace(hour = HOUR, minute = MINUTE, second = SECOND))).total_seconds()time_set = time_set.strftime('%Y-%m-%d %H:%M:%S') # 將時間規范化:年-月-日 時:分:秒countdown(int(deltaT), time_set) # 必須將deltaT轉化為整型,否則在timeformat處會報錯# 打印內容如下:
# 調用程序的固定時間為: 2021-07-09 21:15:00
# 距離下次調用的剩余時間為: 00:00:01
# 程序運行中。# 調用程序的固定時間為: 2021-07-10 21:15:00
# 距離下次調用的剩余時間為: 23:59:56
部分代碼來源:https://stackoverflow.com/questions/25189554/countdown-clock-0105/50148334
感悟:類似的程序網上遍地都是,估計有更簡潔的寫法。不過自己寫的體會要深刻點,感覺還是比較好用的。使用的時候只需要自己定義run_your_script()函數并修改設定的時間就可以了。
總結
以上是生活随笔為你收集整理的python 每天定时运行程序(傻瓜式倒计时)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国庆第四天出行归来
- 下一篇: Centos7 压缩文件