python - 使用 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 作业。那是我唯一的解决方案吗?
解决方案
我确实解决了这个问题,但令人尴尬的是,我仍然想发布这个问题,以防其他人遇到同样的问题。
由于 cron 不使用任何特定路径,因此您必须指定所有内容才能执行打开任何文件夹/文件或其他程序的程序。不仅在 crontab 中,而且在程序本身中。就我而言,这是df = pd.read_excel('db.xlsx', engine='openpyxl')
导致错误的原因,所以当我将其更改为它时,df = pd.read_excel('/home/pi/bot/db.xlsx', engine='openpyxl')
它就像一个魅力。
如果您考虑使用 bash 脚本打开另一个程序,情况也是如此。只有直接路径似乎有效。
推荐阅读
- c# - 如何从 Unity 中指定路径获取的文件列表中删除文件?
- windows - windows上的docker里面的docker
- c# - 如何动态调用具有泛型类型参数的方法
- angular - MEAN Stack - MongoDB - 在具有两种不同条件的文档中循环
- dart - Flutter 如何更新变量并在不同的有状态小部件中使用它们?
- javascript - 具有唯一选择的多选下拉列表 - React JS
- javascript - 使用授权标头从 Geoserver 获取 JSON 文件会导致 MIME 类型错误
- python - 使用Python滚动页面时如何在列表标签内获取多个div元素文本
- r - 使用“fread”,如何从 csv 中消除注释行?
- c# - typeof(int[][]).GetArrayRank() 的值为 1