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+O并CTRL+X保存并退出.
笔记:
1 - A job按以下格式指定:
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)
一旦确定当前时间已超过开始时间,请使用对象将开始时间增加所需的时间间隔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)