私は毎分crontabからPythonシェルを実行しています:
* * * * * /home/udi/foo/bar.py
/home/udi/foo
以下のように、いくつかの必要なサブディレクトリを持っている/home/udi/foo/log
と/home/udi/foo/config
され、/home/udi/foo/bar.py
を指します。
問題はcrontab
、別の作業ディレクトリからスクリプトを実行するため、開こうとすると./log/bar.log
失敗することです。
作業ディレクトリをスクリプト自体のディレクトリに変更するようにスクリプトに指示する良い方法はありますか?スクリプトの場所を明示的に伝えるのではなく、どのスクリプトの場所でも機能する解決策を考えます。
編集:
os.chdir(os.path.dirname(sys.argv[0]))
最もコンパクトでエレガントなソリューションでした。あなたの答えと説明をありがとう!
crontab
ユースケースとは無関係:両方を使用し、スクリプトをを使用して実行するsys.argv[0]
と__file__
失敗しexecfile()
ます。inspect
ベースのソリューションを代わりに使用できます。