Saya ingin melihat apa cara terbaik untuk menentukan direktori skrip saat ini di python?
Saya menemukan bahwa, karena banyak cara memanggil kode python, sulit untuk menemukan solusi yang baik.
Berikut ini beberapa masalah:
__file__
tidak ditentukan jika skrip dieksekusi denganexec
,execfile
__module__
didefinisikan hanya dalam modul
Gunakan kasing:
./myfile.py
python myfile.py
./somedir/myfile.py
python somedir/myfile.py
execfile('myfile.py')
(dari skrip lain, yang dapat ditemukan di direktori lain dan yang dapat memiliki direktori saat ini.
Saya tahu bahwa tidak ada solusi yang sempurna, tetapi saya sedang mencari pendekatan terbaik yang memecahkan sebagian besar kasus.
Pendekatan yang paling banyak digunakan adalah os.path.dirname(os.path.abspath(__file__))
tetapi ini benar-benar tidak berhasil jika Anda menjalankan skrip dari yang lain dengan exec()
.
Peringatan
Solusi apa pun yang menggunakan direktori saat ini akan gagal, ini bisa berbeda berdasarkan pada cara skrip dipanggil atau dapat diubah di dalam skrip yang sedang berjalan.
pathlib
solusi Ron Kalian jika Anda menggunakan python 3.4 atau lebih tinggi: stackoverflow.com/a/48931294/1011724
python myfile.py
dari shell, ia bekerja, tetapi keduanya :!python %
dan :!python myfile.py
dari dalam vim gagal dengan Sistem tidak dapat menemukan jalur yang ditentukan. Ini sangat menjengkelkan. Adakah yang bisa berkomentar tentang alasan di balik ini dan solusi potensial?