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

Jo *_* Ko 4 python time datetime automation python-2.7

目前,我有一个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
Run Code Online (Sandbox Code Playgroud)

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

提前谢谢你,一定会upvote /接受答复

Ped*_*ito 10

您需要的正确工具是cronjob.
要创建一个jobon mac,每天在12:00执行,打开终端并键入:

env EDITOR=nano crontab -e
0 12 * * *  /full/path/to/python /full/path/to/script.py
Run Code Online (Sandbox Code Playgroud)

CTRL+OCTRL+X保存并退出.


笔记:

1 - A job按以下格式指定:

          • 命令执行││││││││────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ───────────────────────────────────────────────────────────────────────────────────────────────────────────── ──────────────小时(0 - 23)└──────────────────────────────────────────────────────────────────

2 - 要查看活动crontab作业的列表,请使用以下命令:

crontab -l
Run Code Online (Sandbox Code Playgroud)

提示:

凌晨1点在工作日执行:

0 1 * * 1-5 /full/path/to/python /full/path/to/script.py
Run Code Online (Sandbox Code Playgroud)

每10分钟执行一次:

*/10 * * * * /full/path/to/python /full/path/to/script.py
Run Code Online (Sandbox Code Playgroud)

将输出记录到文件:

*/10 * * * * /full/path/to/python /full/path/to/script.py >> /var/log/script_output.log 2>&1
Run Code Online (Sandbox Code Playgroud)

  • 如果python 完整路径已经在`PATH` 上,则不需要它,我只是为了新用户的安全。 (2认同)

che*_*ner 4

一旦确定当前时间已超过开始时间,请使用对象将开始时间增加所需的时间间隔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)
Run Code Online (Sandbox Code Playgroud)