是否可以让python 2.7在一天中的特定时间打印。例如,如果我在15:06运行程序并将其编码为在15:07打印“立即执行任务”,则会打印出来。所以无论你在15:07点击它的时候运行该程序,它都会打印出“现在就完成任务”。此外,此时可以每周打印一次吗?
答案 0 :(得分:4)
如果你能够,我会建议安装图书馆时间表。
使用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)
以使其睡眠时间更长。这是schedule library page。
答案 1 :(得分:1)
虽然python不适合安排一些事情;那里有更好的工具。然而,如果希望在下面的 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
打算在一分钟内打印;可以选择较短的持续时间。但break
之后的
您需要对此进行推断,以便代码在几天内运行。
答案 2 :(得分: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'