SORU
22 Kasım 2011, Salı


Python yapılandırma dosyası: Herhangi bir dosya biçimi önerisi? Format hala uygun INI? Oldukça eski okul görünüyor

Python uygulaması için yapılandırma (anahtar/değer) depolamak lazım ve bir dosya içinde bu yapılandırmaları saklamak için en iyi yol arıyorum.

ConfigParser Python ile karşılaştım ve INI dosya biçimi gerçekten hala uygun değilse bugünlerde? merak ettim! Güncel daha bir biçim var ya INI hala gitmek için önerilen yol nedir? (XML, JSON, ...)

Düşüncelerini paylaş lütfen/öneriler...

CEVAP
22 Kasım 2011, Salı


Yapılandırma dosyaları olarak normal Python dosyalarını kullanmayı düşünün.

(example.conf) bir örnek:

# use normal python comments

value1 = 32
value2 = u"A unicode value"
value3 = "A plain string value"

value4 = ["lists", "are", "handy"]
value5 = {"and": "so", "are": "dictionaries"}

Programda, config dosyasıexecfile (2.7 docs)kullanarak yük:

if __name__ == "__main__":
    config = {}
    execfile("example.conf", config) 
    # python 3: exec(open("example.conf").read(), config)

    print config["value1"]
    print config["value5"]

Bu yaklaşım, aşağıdaki nedenlerden dolayı seviyorum:

  • Basit durumda, bir biçim İNİ tarzı bir yapılandırma dosyası olarak yazar kolaylığı sağlıyor. Ayrıca, INI dosyaları ile önemli bir özelliği paylaşır: sürüm kontrol (Bu JSON, XML ve belki de daha az doğrudur . çok uygundur
  • Config gerçek bir programlama dili dosyası olan gelir esnekliği seviyorum.

Bu yaklaşım yaygın olarak kullanılan, birkaç örnek:

  • Django bir site Ayarları settings.py içinde yaşıyor. Django import/settings.py AFAIK okumak yürütmek için kullanır, ama aynı execfile, kullanmaz: dosya yürütülür ayarları içinde kodu.
  • Bash kabuğu ve başlangıçta ~/.bashrc okur ve yürütür.
  • Python yorumlayıcısı ithalatı (yürütür) 10* *başlangıç.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • André Frizzo

    André Frizz

    16 Aralık 2006
  • Tracy Hairston

    Tracy Hairst

    22 Mayıs 2009
  • Ty Moss

    Ty Moss

    20 Kasım 2007