2017-01-14 89 views
2

是否有可能讓python 2.7在一天的特定時間打印某些東西?例如,如果我在15:06運行該程序並將其編碼爲在15:07打印「立即執行任務」,則會打印該文件。所以無論你什麼時候運行程序,一旦它打到15:07,它都會打印出「立即執行任務」。另外,這個時候可以每週打印一次嗎?如何在當天的特定時間打印某些東西

+0

是的Python可以做到這一點。 –

+0

謝謝@StephenRauch,但我會如何編碼? – Ryan

+0

我會建議調查日期時間模塊。 https://docs.python.org/3/library/datetime.html –

回答

1

雖然python並不理想的安排某些東西;那裏有更好的工具。然而,如果需要的話在蟒蛇下面做的是一種方法來實現:在上午11時的scheduled_time

打印:

import datetime as dt 
scheduled_time = dt.time(11,00,00,0) 
while 1==1: 
    if (scheduled_time < dt.datetime.now().time() and 
     scheduled_time > (dt.datetime.now()- dt.timedelta(seconds=59)).time()): 
     print "Now is the time to print" 
     break 

有兩個if conditions與意圖在一分鐘內打印;可以選擇較短的持續時間。但是print之後的break確保print僅被執行一次。

您需要對此進行推斷,以便代碼在幾天內運行。

參見:datetime Documentation

+0

直到「break」時,這是否會以100%的CPU運行線程? –

1

如果你不使用cron,那麼一般的解決辦法是找到剩下的,直到你需要的事件發生的時間,有那時間程序睡眠,然後繼續執行。

棘手的部分是讓程序找到給定時間的下一次出現。這裏有一些模塊,但你也可以用簡單的代碼來完成一個明確定義的情況,它只是一個固定的時間。

import time 

target_time = '15:07:00' 
current_epoch = time.time() 

# get string of full time and split it 
time_parts = time.ctime().split(' ') 
# replace the time component to your target 
time_parts[3] = target_time 
# convert to epoch 
future_time = time.mktime(time.strptime(' '.join(time_parts))) 

# if not in the future, add a day to make it tomorrow 
diff = future_time - current_epoch 
if diff < 0: 
    diff += 86400 

time.sleep(diff) 
print 'Done waiting, lets get to work' 
3

我會建議安裝庫時間表,如果你能夠。

使用pip install schedule

您的代碼應該是這樣的,如果利用時間表:

import schedule 
import time 

def task(): 
    print("Do task now") 

schedule.every().day.at("15:07").do(task) 

while True: 
    schedule.run_pending() 
    time.sleep(1) 

您可以根據需要調節time.sleep(1)睡更長,如果一個1秒間隔時間太長。這裏是schedule library page

相關問題