cronから呼び出すと、Pythonスクリプトが間違ったディレクトリに出力されます。

cronから呼び出すと、Pythonスクリプトが間違ったディレクトリに出力されます。

スクリプトには権限と所有権/blah/script.pyがあります-rwxr-xr-x 1 root root。スクリプトは次のとおりです。

#!/usr/bin/python

with open('blahblah', 'w') as f:
    f.write('hello')

を使用してcrontab -e以下を試しました。

0 * * * * /blah/script.py

うまくいきますが、ファイルは/root/blahblah.pyファイルに名前をハードコーディングせずに、必要なディレクトリ/blah/blahblah/blah/blahblahこの場合)に出力ファイルを生成するにはどうすればよいですか?つまり、cronでPythonスクリプトを呼び出し、スクリプトが格納されているディレクトリを作業ディレクトリとして使用する方法

注:これはうまくいきますが、あまり良くありません 0 * * * * cd /home/blah && /usr/bin/python script.py

答え1

解決策はこれをPythonスクリプトに追加することです。

import os, sys
os.chdir(sys.path[0]) 

回答で説明したようにhttps://stackoverflow.com/q/1432924/1422096

関連情報