Nasıl düzgün bir Python komut dosyası geçerli dizini belirlemek için?
En iyi yolu, mevcut script dizini belirlemek için python içinde ne olduğunu görmek istiyorum?
Arama python kod birçok yönden iki, çok iyi bir çözüm bulmak olduğunu keşfettim.
Burada bazı sorunlar:
__file__
Eğer scriptexec
,execfile
gerçekleştirildiğinde tanımlı değil__module__
modüller tek olarak tanımlanır
Kullanım durumları:
./myfile.py
python myfile.py
./somedir/myfile.py
python somedir/myfile.py
execfile('myfile.py')
(başka bir Senaryo, başka bir dizinde yer alabilir ve başka bir geçerli dizin var.
Mükemmel bir çözüm, çünkü bazı durumlarda yok biliyorum ama çoğu çözüldü en iyi yaklaşım arıyorum.
En çok kullanılan yaklaşım os.path.dirname(os.path.abspath(__file__))
ama bu gerçekten varsa exec()
ile başka bir komut dosyasını çalıştırmak için işe yaramıyor.
Uyarı
Geçerli dizini kullanan herhangi bir çözüm başarısız olur, Bu komut dosyası denir bağlı olarak farklı olabilir veya çalışan komut dosyası içinde değiştirilebilir.
CEVAP
os.path.dirname(os.path.abspath(__file__))
aslında alacaksın en iyisi.
Sıradışıexec
/execfile
; normal yük komut modülü altyapısını kullanarak bir komut dosyası yürütme. Eğer bu yöntemler, tavsiye ederim globals
__file__
ayarı kullanmanız gerekiyorsa dosya adı okuyabilmesi senaryoya geçirir.
Not olarak, basılı belge tamamen farklı bir yerde olabilir. execed kodu dosya adını almak için başka bir yol var:
Nasıl Python ile geçerli çalışma dizin...
Nasıl komut dizin için geçerli çalışma...
Nasıl Vim çalışan/geçerli dizini belir...
Nasıl bir toplu iş dosyası komut satır...
Nasıl Python değişken türünü belirleme...