一、电脑简介
二、获取代码的绝对路径
由于mac系统使用xlwings 修改excel需要授予文件权限,如果文件被新文件替换后,仍需要授予权限。故我将xlwings用到的excel其放到Excel的data文件夹下/Users/yuanqi/Library/Containers/com.microsoft.Excel/Data并在Data文件夹下创建了一个新文件夹用于储存python代码和生成的excel,并将其文件标记为灰色,方便访问该文件夹。
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 执行结果
可以看出定时任务执行成功
若crontab执行不成功则可以参考链接进行设置
参考:https://zhuanlan.zhihu.com/p/564215492
2.6 输入
可以查看python的运行报错
由于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的代码替换即可