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.pypython myfile.py./somedir/myfile.pypython somedir/myfile.pyexecfile('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.
pathlibsolusi Ron Kalian jika Anda menggunakan python 3.4 atau lebih tinggi: stackoverflow.com/a/48931294/1011724
python myfile.pydari shell, ia bekerja, tetapi keduanya :!python %dan :!python myfile.pydari 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?