目前,我有一个python脚本,只有在达到指定的日期/时间后才会启动,除非我重新指定日期/时间,否则永远不再运行:
import datetime, time
start_time = datetime.datetime(2017, 4, 27, 19, 0, 0)
while(True):
dtn = datetime.datetime.now()
if dtn >= start_time:
# Runs the main code once it hits the start_time
但是我怎样才能使它只在每天的指定时间运行代码?
提前感谢您,一定会提前/接受回答
答案 0 :(得分:9)
cronjob
是完成这项工作的正确工具
要在job
上创建mac
,每天在12:00执行,请打开终端并输入:
env EDITOR=nano crontab -e
0 12 * * * /full/path/to/python /full/path/to/script.py
CTRL + O 和 CTRL + X 保存并退出。
备注:强>
1 - 以下列格式指定job
:
2 - 要查看活动crontab
作业的列表,请使用以下命令:
crontab -l
<强>提示:强>
凌晨1点在工作日执行:
0 1 * * 1-5 /full/path/to/python /full/path/to/script.py
每10分钟执行一次:
*/10 * * * * /full/path/to/python /full/path/to/script.py
将输出记录到文件:
*/10 * * * * /full/path/to/python /full/path/to/script.py >> /var/log/script_output.log 2>&1
答案 1 :(得分:0)
确定当前时间已超过开始时间后,使用datetime.timedelta
对象将开始时间增加所需的时间间隔。
import datetime
import time
next_start = datetime.datetime(2017, 4, 27, 19, 0, 0)
while True:
dtn = datetime.datetime.now()
if dtn >= next_start:
next_start += datetime.timedelta(1) # 1 day
# do what needs to be done
time.sleep(AN_APPROPRIATE_TIME)
答案 2 :(得分:0)
使用python你可以尝试
在这两种情况下,python解释器必须运行,并且可能在等待正确的时间时执行其他操作。
或者如评论中所建议的那样,您可以使用在您的操作系统上运行的其他服务来安排您的python脚本执行。
为什么不是cronjob(linux)或Task Scheduler(windows)? - Pedro Lobito
答案 3 :(得分:0)
使用Python模块可以选择apscheduler。
cluster1 <- dplyr::filter(bank, Cluster == "cluster1")