是否有可能让Python 2.7在一天的特定时间打印某些内容?例如,如果我在15:06运行程序并编写代码,在15:07打印“现在进行任务”,它会打印出来。因此,无论您何时运行程序,一旦到达15:07,它都会打印“现在进行任务”。此外,是否可以使其每周在此时间打印?
是否有可能让Python 2.7在一天的特定时间打印某些内容?例如,如果我在15:06运行程序并编写代码,在15:07打印“现在进行任务”,它会打印出来。因此,无论您何时运行程序,一旦到达15:07,它都会打印“现在进行任务”。此外,是否可以使其每周在此时间打印?
如果您有能力,我建议安装库“schedule”。
使用pip install schedule
如果使用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)
如果 1 秒的时间间隔太长,您可以根据需要调整 time.sleep(1)
的时间。这是schedule库页面。
在scheduled_time
的11AM打印:
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 条件
,意图在一分钟内打印; 可以选择更短的持续时间。但是,在break
确保只执行一次
您需要推广此代码,以便跨越几天运行。
参考:datetime
文档
棘手的部分是使程序找到给定时间的下一个出现。有一些模块可以做到这一点,但对于仅为固定时间的情况,您也可以使用普通代码来完成。
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'