SORU
27 Mayıs 2009, ÇARŞAMBA


Python göreli yolları

Geçerli dizini için kod tabanımızda şablon dosyaları bir kaç kopya olacak bu iş için basit bir yardımcı komut dosyası inşa ediyorum. Ancak, şablonları saklandığı dizin için mutlak yolu yok. Komut dosyası için göreli bir yol var ama senaryoyu okuduğumda bir yol geçerli çalışma dizini ile göreli olarak değerlendirir. Bir şekilde bu göreli url komut dosyasının konumunu belirtmek için yerine var mı?

CEVAP
27 Mayıs 2009, ÇARŞAMBA


Komut dosyası var o dosyanın içinde böyle bir şey yapmak istiyorum:

import os
dir = os.path.dirname(__file__)
filename = os.path.join(dir, '/relative/path/to/file/you/want')

Bu sizin aradığınız dosyanın tam yolunu verecektir. Eğer setuptools kullanıyorsanız, muhtemelen package resources API onun yerine kullanmanız gerektiğini unutmayın.

GÜNCELLEME: Örnek kod yapıştırmak için ben de yorum yapmak için buraya gelmiştim. :-)

__file__ her zaman kullanılabilir (dosyayı doğrudan çalıştırmak yerine alırken örneğin) değil, yanılıyor muyum?

Dosyayı doğrudan çalışan söz konusu olunca __main__ script ne demek olduğunu varsayıyorum. Eğer öyleyse, bu benim sistemi (OS X python 2.5.1 10.5.7) durum gibi görünmüyor:

#foo.py
import os
print os.getcwd()
print __file__

#in the interactive interpreter
>>> import foo
/Users/jason
foo.py

#and finally, at the shell:
~ % python foo.py
/Users/jason
foo.py

Ancak, C uzantıları __file__ Bazı tuhaflıklar olduğunu biliyorum. Örneğin, benim Mac üzerinde bunu yapabilirim:

>>> import collections #note that collections is a C extension in Python 2.5
>>> collections.__file__
'/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-
dynload/collections.so'

Ancak, bu benim Windows bir istisna makine yükseltir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BurnedInDotCom

    BurnedInDotC

    3 NİSAN 2010
  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • Within Temptation

    Within Tempt

    18 EYLÜL 2006