2013-03-18 19 views
6

Python içinde bir cin senaryo yazıyorum ve program (.conf dosyaları gibi) okumak için beklediği bir dosyada ayarlarını belirlemek mümkün olmak istiyorum. Standart kütüphanede configparser ve xdrlib dosya formatları vardır, ancak pythonic gibi görünmez; Birincisi bir Microsoft standardı ve ikincisi bir Sun Microsystems standardıdır.Bir yapılandırma dosyası belirtmek için en çok kullanılan pythonic yöntem hangisidir?

Kendi başıma yazabilirim, ancak tekerleği yeniden icat etmekten çok iyi bilinen ve belgelenmiş bir standarda bağlı kalmayı tercih ederim. Eğer herhangi bir özellikle karmaşık ihtiyaçları yoksa

cevap

2

IMHO: ConfigParser Modülüne ASLA dokunmayın, güncelliğini yitirmiş (okur: açıkçası güncel değil) ve bazı tuhaflıkları vardır. Yorumlar için API? Unut gitsin! DEFAULT Bölümüne Erişim? LOL! Config-Fields ayrıştırılmamış mı merak ediyorsunuz? (Sayarlar) belki SONUNDA TÜM Hatalar üzerinde yoğunlaşmış İstisna-Trace yapmak ConfigParser bütün yapılandırma dosyaları üzerinde dolaşır ve sessizce başarısız: Eh ne olduğunu tahmin. Hangi dosyanın hangi dosyaya ait olduğunu bulmak kolay değil. Yuvalanmış yapılandırma bölümleri yok ...

Oldukça CSV sonra ConfigParser!

IMO: config-dosyalar için kullanın Json. Python veri yapıları ve Json-String gösterimi arasında çok esnek, doğrudan haritalama mümkündür ve hala insan tarafından okunabilir. Btw. Farklı diller arasındaki değişim oldukça kolaydır.

Dosyadaki Kıvrımlı Ayraçlar o kadar güzel değil, ama hepsine sahip olamazsınız! ;-)

+1

Bu benim ConfigParser modülü hakkında vardı aynı duygu. JSON kullanarak düşünürdüm (en azından web-bilge her yerde olduğu için), ama bu sorun oldu, ben yapılandırma dosyaları için kullanılan hiç görmedim, ve daha bir ayar belirtimi daha bir veri değişim formatı. Teşekkürler! – Andy

+0

Teşekkür etmene gerek yok, sadece dürüst bir cevap olarak kabul et! ;) –

5

, ConfigParser kullanarak yanlış bir şey yok. Birçok kişi için kolayca anlaşılan ve tanıyan basit, düz bir dosya formatıdır. Bu gerçekten size ters yöne iten, orada her zaman JSON veya YAML yapılandırma kullanmanın seçenek ancak bu biraz daha ağır biçimleridir.

Üçüncü popüler bir seçenek sadece yapılandırma dosyası için Python kullanmaktır. Bu size daha fazla esneklik sağlar, ancak aynı zamanda yapılandırma dosyanızı değiştirerek 'sadece' tuhaf hatalar getirme olasılığını artırır.

1

Ben de configparser ve optionsparser ile başladım, ancak benim için en akıcı yol sadece bir .py dosyasındaki sözlükleri tanımlamak ve bir modül olarak içe aktarmaktır. Daha sonra herhangi bir başka işleme gerek kalmadan konfigürasyonlara doğrudan erişebilirsiniz. Eğer erişmesi gereken yerde

# 
# example.py 
# 
config = { 
    "dialect" : "sqlite", 
    "driver" : "", 
    "database" : "testdb", 
    "host"  : "localhost", 
    "port"  : "0" 
} 

sadece yapın:

from example import config 

print config["database"] 
İlgili konular