reading Foundations for Analysis with Python Day 11

目前我们写出的Python代码,无论是jupyter notebook里还是变成.py格式的脚本,都是需要手动点按钮运行,但是在有些需要自动化定期运行脚本的情况怎么办呢?《Python数据分析基础》用一个简短的章节介绍了实现方法。思路就是利用 Windows 系统或 macOS 系统中可定期运行脚本和其他可执行文件的程序。微软称这个程序为 Task Scheduler(任务计划程序) ;在 Unix 系统和 macOS 系统中,这样的程序称为 cron(定时任务) 。本笔记只实现Windows 10系统的自动化,macOS系统可以仔细去看原书,或者网上找其他教程。
和原书一样,这篇笔记也是用第5章 应用程序写的处理MySQL报错日志的代码。由于我之前是写在jupyter notebook里的,先导出代码到文本文件里,命名为autoParseMySQLlog.py。后面基本都是通过截图说明,文字会相对较少。
原书是通过控制面板→系统和安全→管理工具去找任务计划程序,我觉得Win10还有更简便的方法去找,那就是用Cortana输入Task Scheduler去找。

找到之后我们点开任务计划程序,看到的界面如下,如果打开时需要输入电脑账户的密码就输入验证一下。

看到任务计划程序的界面后,点击左上角的“操作”菜单,然后点击“创建基本任务”,然后看到“创建基本任务向导”界面,如下:

在创建基本任务向导界面输入任务名称和任务描述(似乎都只能是英文)后,点击下一步,选择任务触发的条件,我选择的是每天执行。

设置任务每天执行后,填写每天执行的时间:

执行的操作选择“启动程序”

选择脚本保存的路径,因为我是把传入的参数直接写到代码里的,所以添加参数部分留空。

再点击下一步就到完成界面了。

通过按计划自动地定期运行 Python 脚本和其他可执行文件,你可以消除忘记手动运行脚本的可能。此外,相对于手动运行脚本,你可以通过自动运行脚本极大地提高工作效率。当你的业务对数据处理与分析脚本越来越依赖时,手动运行脚本的方式会更加不可行。
因为我不想每天的数据都写到同一个csv文件里,所以设置了一下输出文件的名称,这样可以得到一系列文件,要做统计可以用到应用程序部分笔记里的代码。
from datetime import datetime
now=datetime.now()
k=now.strftime('_%Y_%m_%d_%H_%M') #年 月 日 小时 分
in_f='./mysql_server_error_log.txt'
out_f='error_log_out'+k+'.csv'
parseTextFile(in_f,out_f) #调用
(上面代码片段中的函数parseTextFile(in_f,out_f) 在Python数据分析基础ReadingDay7_应用程序里)
这样我们就完成了Windows系统的程序自动运行设置了,macOS 系统的cron(定时任务)请参考原书第215页~218页。
本篇笔记的GitHub同步项目于readingForDS。关于本系列笔记有任何建议欢迎留言讨论。
网友评论