Pythonスクリプトは端末でbashコマンドで実行されますが、cronジョブでは実行されません。

Pythonスクリプトは端末でbashコマンドで実行されますが、cronジョブでは実行されません。

Raspberry Pi(Stretch OS)でPythonスクリプトをcronジョブとして実行しようとしていますが、スクリプトは完全には実行されません。

crontab -eでは:

*/1 * * * * python /home/pi/project/myfile.py >> /home/pi/project/logerrorfile.txt

ログファイルは、以下のmyfile.pyスニペットに示すように、テキストファイル(Variable.txtなど)から変数を取得しようとするとスクリプトが実行されないことを示しています。

print("reading txt file for variable now") #log file prints this
text_file = open('variable.txt')
try:
    variable = text_file.readlines()
except:
    print("Error: unable to read variable from txt file") #This is not printed in the log file
print("variable read successfully from txt file") #This is also not printed in the log file

ただし、このスクリプトをターミナルでbashコマンドとして実行すると、スムーズに実行され、スクリプト全体が実行されます。ターミナルのbashコマンドではうまく機能しますが、cronジョブでは正しく機能しないのはなぜですか?また、cronジョブコマンドでPythonランチャーへの絶対パスを宣言しようとしましたが、 #0,30 * * * * /usr/bin/python /home/pi/project/myfile.py >> /home/pi/project/logerrorfile.txtスクリプトはまだcronジョブとして実行されません。そのため、cronを使用してテキストファイルから変数を読み取るスクリプトを実行するのに問題があるようです。これについてのアドバイスをいただきありがとうございます。

答え1

steeldriverが述べたように、解決策はスクリプトでVariable.txtファイルの絶対パスを宣言してcronが機能するようにすることです。

関連情報