我的 cron 找不到文件

我的 cron 找不到文件

我编写了一个 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。

相关内容