Şablon stili enterpolasyonlu python'da ConfigObj kullanıyorum. Yapılandırma sözlüğümün ** üzerinden kaldırılması enterpolasyon yapmıyor gibi görünüyor. Bu bir özellik mi yoksa bir böcek mi? Güzel bir çözüm var mı?Neden kwargs python ConfigObj ile interpolasyon yapmıyor?
$ cat my.conf
foo = /test
bar = $foo/directory
>>> import configobj
>>> config = configobj.ConfigObj('my.conf', interpolation='Template')
>>> config['bar']
'/test/directory'
>>> '{bar}'.format(**config)
'$foo/directory'
Ben ikinci hat /test/directory
olmasını beklersiniz. Neden enterpolasyon ** kwargs ile çalışmıyor?
'**' anahtar kelime bağımsız değişken yalnızca açma eşleştirmeleri için çalışır. Muhtemelen 'ConfigObj' örnekleri tam [haritalama] (http://docs.python.org/glossary.html#term-mapping) arayüzünü göstermiyor. –
ConfigObj * dict'dan * devralır, bu yüzden tam olarak eşleme arayüzünü sağlar (ve ** unpack'in * çalıştığı * işe yaramıştır * sadece yanlış değerlere sahiptir). "**" "değerlerin nasıl çıkacağından emin değilim, açıkçası enterpolasyonu atlatıyor. Çalışmak için biraz deneme yapmak zorunda kalacağım. – fuzzyman
Doğrudan dict'ten miras kalan bir tuhaflık yok mu? http://stackoverflow.com/questions/3387691/python-how-to-perfectly-override-a-dict Ben bu konuda uzman değilim, ama belki de [MutableMapping] kullanarak (http: //docs.python .org/library/collections.html # collections.MutableMapping) veya [DictMixin] (http://docs.python.org/library/userdict.html#UserDict.DictMixin) daha iyi olurdu? –