首页 > 解决方案 > 使用 Cron Job 运行 python 程序

问题描述

我正在尝试使用 cron 运行 python 程序。最初我尝试使用 cron 在 python 中运行网络爬虫,但我很快意识到出了点问题。因此,我尝试分解该过程以查看错误在哪里。我发现 cron 实际上不会运行任何比 print("Hello World")

对于初学者,我正在尝试使用 cron 运行此代码:

import pandas as pd
import os
import sys

sys.stdout = open("/home/pi/testbot/crontask.txt", "w")

df = pd.read_excel('db.xlsx', engine='openpyxl')
print(df)

sys.stdout.close()

我希望程序读取一个 .xlsx 文件并将输出写入一个名为 crontask.txt 的文件中。

现在转折来了。

当我运行命令时,python3 testbot.py 我得到了正确的结果,以及 crontask.txt 中的内容。

但是当我添加* * * * * /usr/bin/python3 /home/pi/testbot/testbot.py >> /home/pi/testbot/log.txt到 crontab 时,我在 log.txt 中得到零个结果和零个日志条目。

我试图使 .py 文件可以执行chmod +x testbot.py并更改权限,但没有运气。

我开始怀疑运行此类程序的唯一方法是否是制作一个运行该程序的脚本并在其上使用 cron 作业。那是我唯一的解决方案吗?

标签: pythoncronraspberry-pi

解决方案


我确实解决了这个问题,但令人尴尬的是,我仍然想发布这个问题,以防其他人遇到同样的问题。

由于 cron 不使用任何特定路径,因此您必须指定所有内容才能执行打开任何文件夹/文件或其他程序的程序。不仅在 crontab 中,而且在程序本身中。就我而言,这是df = pd.read_excel('db.xlsx', engine='openpyxl')导致错误的原因,所以当我将其更改为它时,df = pd.read_excel('/home/pi/bot/db.xlsx', engine='openpyxl')它就像一个魅力。

如果您考虑使用 bash 脚本打开另一个程序,情况也是如此。只有直接路径似乎有效。


推荐阅读