後でプログラムで必要になるすべての値を含む .ini のようなファイルを作成しました。以下を参照してください。
[debugging]
checkForAbort = 10
...
[official]
checkForAbort = 30
...
これらすべての項目を 1 つのクラスに読み込み、Python プロジェクトの他の部分からアクセスできるようにしたいと考えています。私がこれまでに持っているのは、以下のコードです:
from ConfigParser import SafeConfigParser
import glob
class ConfigurationParameters
def __init__(self):
self.checkForAbortDuringIdleTime = None
parser = SafeConfigParser()
# making a list here in case we have multiple files in the future!
candidatesConfiguration = ['my.cfg']
foundCandidates = parser.read(candidatesConfiguration)
missingCandidates = set(candidatesConfiguration) - set(found)
if foundCandidates:
print 'Found config files:', sorted(found)
else
print 'Missing files :', sorted(missing)
print "aborting..."
# check for mandatory sections below
for candidateSections in ['official', 'debugging']:
if not parser.has_section(candidateSections)
print "the mandatory section", candidateSections " is missing"
print "aborting..."
for sectionName in ['official', 'debugging']:
for name, value in parser.items(section_name):
self.name = value
私はPythonを初めて使用しますが、コードにはまだ多くの問題があります:
- クラス ファイルの各項目に属性を追加する必要があります。構成ファイルとクラスを常に同期させます。
- このクラスはシングルトンではないため、インポートされた場所から読み取り/解析が行われます!
- 私のクラスで定義されていない設定ファイルに値が追加されると、おそらくクラッシュします!
代わりに、この問題をどのように解決すればよいですか? クラス属性を動的に作成できますか?
私のクラスは値から読み取るだけでよいので、構成ファイルへの書き込みは必要ありません!