こんにちは。hacknoteのr.katoです。
先日pythonで書いたコードをcronを使って実行していたのですが、なぜかファイルが存在しないとエラーを返してきて正常に終了してくれませんでした。
色々と調べていたらその原因がわかったので紹介していきます。
起こったこと
次のようなファイルの読み込みをするコードを実行していました。
hoge_error.py
import numpy as np data = np.loadtxt("./hogehoge.csv",delimiter=",")
このコードを python hoge_error.py
といった感じで普通に実行すると問題なく動きます。
しかし、cronを使って実行すると、 No such file or directory
といった感じのファイルが存在しないエラーが発生しました。
原因
原因のはファイルのパスを相対パスで指定していたことでした。
cronを使って実行すると、rootやhomeなどでコマンドが実行されます。
そのため、ファイルパスを相対パスで指定していると、ファイルが存在しないor同じ名前の違うファイルにアクセスしてしまう、といったことが発生します。
解決方法
コード内のファイルパスを次のように絶対パスに変更して解決です。
import numpy as np data = np.loadtxt("/home/hoge/hogehoge.csv",delimiter=",")