Saya menjalankan shell python dari crontab setiap menit:
* * * * * /home/udi/foo/bar.py
/home/udi/foo
memiliki beberapa subdirektori yang diperlukan, seperti /home/udi/foo/log
dan /home/udi/foo/config
, yang /home/udi/foo/bar.py
merujuk pada.
Masalahnya adalah crontab
menjalankan skrip dari direktori kerja yang berbeda, jadi mencoba membuka ./log/bar.log
gagal.
Apakah ada cara yang bagus untuk memberitahu skrip untuk mengubah direktori kerja ke direktori skrip sendiri? Saya lebih suka solusi yang akan bekerja untuk lokasi skrip apa pun, daripada secara eksplisit memberitahu skrip di mana skrip itu berada.
EDIT:
os.chdir(os.path.dirname(sys.argv[0]))
Merupakan solusi elegan paling kompak. Terima kasih atas jawaban dan penjelasan Anda!
crontab
use-case: keduanyasys.argv[0]
dan__file__
gagal jika skrip dijalankan menggunakanexecfile()
;inspect
solusi berbasis bisa digunakan sebagai gantinya.