2017-01-14 54 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

相关问题