我编写了一个 Python 脚本,希望通过 crontab 运行它!我单独运行了该 Python 脚本,它运行正常!问题是,当我通过 Crontab 运行它时,我收到一个错误,指示它调用的 Python 文件之一不存在。
中的错误/tmp/listener.log
如下:
Traceback (most recent call last):
File "/root/telegram/sendmsg.py", line 21, in <module>
file = open("List.csv")
FileNotFoundError: [Errno 2] No such file or directory: 'List.csv'
尽管我的文件存在,并且当我在没有 crontab 的情况下运行脚本时它也会运行!
我的 crontab 设置如下:
30 14 * * * /usr/bin/python3 /root/tele/msg.py > /tmp/listener.log 2>&1
我的代码:
import csv
from datetime import date
from timeIR import *
from persiantools.jdatetime import JalaliDate
from persiantools import characters, digits
import requests
def send_to_telegram(message):
apiToken = '****'
chatID = '***'
apiURL = f'https://api.telegram.org/bot{apiToken}/sendMessage'
try:
response = requests.post(apiURL, json={'chat_id': chatID, 'text': message })
print(response.text)
except Exception as e:
print(e)
file = open("List.csv")
data = csv.reader(file)
data = csv.reader(file, delimiter=",")
whoisinshift = []
shiftname = []
phone = []
today=digits.fa_to_en(ShowDateDay())
for row in data:
listdate = row[0]
if listdate==today:
mydate=digits.fa_to_en((ShowTodayFull()))
whois=row[1]
phonenumber=row[2]
file.close()
mymsg=u"\U0001F4C5"+"\t"+mydate+"\n"+u"\uE13B"+"\t"+whois+"\n"+u"\U0001F4F1"+"\t"+phonenumber
send_to_telegram(mymsg)
答案1
正如错误消息明确指出的那样,问题在于脚本找不到文件List.csv
(使用 Cron 运行时),因为您没有说明完整路径。
将脚本中的第 21 行编辑为:
file = open("/root/telegram/List.csv")
那么你的脚本将会运行,即使使用 Cron。