nigel

2023-08-02   阅读量: 1035

crontab Python openpyxl mac 自动化

crontab 定时运行python文件

扫码加入数据分析学习群

一、电脑简介

image.png

二、获取代码的绝对路径

  1. 由于mac系统使用xlwings 修改excel需要授予文件权限,如果文件被新文件替换后,仍需要授予权限。故我将xlwings用到的excel其放到Excel的data文件夹下/Users/yuanqi/Library/Containers/com.microsoft.Excel/Data并在Data文件夹下创建了一个新文件夹用于储存python代码和生成的excel,并将其文件标记为灰色,方便访问该文件夹。

    image.png

image.png


2.打开终端

2.1 输入

which python

获取python地址,本机python地址:/Users/yuanqi/anaconda3/bin/python

2.2 输入

sudo launchctl list | grep cron

2.3 输入

crontab -e

切换英文输入法,按i,切换到输入界面,输入一下内容

18 17 * * 3 /Users/yuanqi/anaconda3/bin/python /Users/yuanqi/Library/Containers/com.microsoft.Excel/Data/excel/test1.py

这串命令表示 每周三17:18 使用python运行test1.py


/Users/yuanqi/anaconda3/bin/python是python地址

/Users/yuanqi/Library/Containers/com.microsoft.Excel/Data/excel/test1.py是excel地址

其中 18 17 * * 3 分别表示 分 时 日 月 周,输入*表示不设置,例如 18 17 3 3 * 表示3月3日17:18执行


2.4 输入

crontab -l

查看设置好的定时执行任务

2.5 执行结果

image.png


可以看出定时任务执行成功


若crontab执行不成功则可以参考链接进行设置

参考:https://zhuanlan.zhihu.com/p/564215492


2.6 输入

mail

可以查看python的运行报错

image.png


由于crontab没有添加自动化权限,不能控制excel,所以执行失败


2.7 解决方案

bing AI 给出使用openpyxl的解决方案

代码如下:

import openpyxl

from openpyxl.drawing.image import Image


fig.savefig(‘foo.png') #保存plot的图片

img_path = 'foo.png'

img = Image(img_path) #只有将图片Image后才能添加

book =openpyxl.load_workbook(“result_{}.xlsx”.format(day)) #打开excel

book.create_sheet(title=“趋势图") #在后面添加sheet,并命名

book[“趋势图"].add_image(img) # “趋势图"工作表添加图片

book.save(“result_{}.xlsx”.format(day)) #保存excel

用这几行代码将xlwings的代码替换即可



mac 定时运行python.pdf


480.0000 1 1 关注作者 收藏

评论(1)

ermutuxia
2023-08-07

牛!

480.0000 1 0 回复

推荐课程

推荐帖子