Python:如何自动化脚本在特定时间每天运行?

时间:2017-04-27 22:17:33

标签: python python-2.7 datetime time automation

目前,我有一个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

但是我怎样才能使它只在每天的指定时间运行代码?

提前感谢您,一定会提前/接受回答

4 个答案:

答案 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

          • 执行命令 │││││ ││││└───星期几(0 - 6)(0至6为星期日至星期六,或使用名称; 7为星期日,与0相同) │││└───────月(1 - 12) ││└────────────月(1 - 31日) │└──────────────小时(0-23) └─────────────────────────────────────────────────────

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")