Python geçerli komut dizini belirlemek için en iyi yolu nedir görmek istiyorum?
Python kodunu çağırmanın birçok yolu nedeniyle, iyi bir çözüm bulmak zor olduğunu keşfettim.
İşte bazı sorunlar:
__file__
komut dosyası yürütülürse tanımlanmazexec
,execfile
__module__
yalnızca modüllerde tanımlanır
Kullanım örnekleri:
./myfile.py
python myfile.py
./somedir/myfile.py
python somedir/myfile.py
execfile('myfile.py')
(başka bir dizinde bulunup başka bir dizinde bulunabilir ve başka bir geçerli dizine sahip olabilir.
Mükemmel bir çözüm olmadığını biliyorum, ancak vakaların çoğunu çözen en iyi yaklaşımı arıyorum.
En çok kullanılan yaklaşım, os.path.dirname(os.path.abspath(__file__))
ancak betiği başka bir komuttan çalıştırırsanız gerçekten işe yaramaz exec()
.
Uyarı
Geçerli dizini kullanan herhangi bir çözüm başarısız olur, bu komut dosyasının çağrılma biçimine göre farklı olabilir veya çalışan komut dosyasının içinde değiştirilebilir.
pathlib
Python 3.4 veya daha yenisini kullanıyorsanız Ron Kalian'ın çözümüne bakın : stackoverflow.com/a/48931294/1011724
python myfile.py
kabuktan yaparken , işe yarıyor, ancak vim içinden :!python %
ve :!python myfile.py
içinden başarısız oluyor Sistem belirtilen yolu bulamıyor. Bu oldukça can sıkıcı. Bunun arkasındaki neden ve olası geçici çözümler hakkında yorum yapan var mı?