ConfigParser は設定ファイルを順不同で書き込みます
Centos6.5 環境では、通常、ConfigParser は設定ファイルの解析に使用されます。 Centos6.5のPythonバージョンはPython 2.6.6です。
一般的なアプリケーション シナリオでは、構成ファイルの順序はそれほど重要ではありませんが、一部のシナリオでは、構成ファイルの順序が非常に効果的です。特に、構成項目の値にオーバーライド機能がある場合、この問題はより深刻です。
Centos 6.5 で一般的に使用される構成ファイルの解析方法は次のとおりです:
[root@stcell03 test]# python
Python 2.6.6 (r266:84292、11 月 22 2013、12: 16 :22)
linux2 の [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)]
詳細については、「ヘルプ」、「著作権」、「クレジット」、または「ライセンス」と入力してください。
>>> ; ConfigParser をインポートします
>>> config = ConfigParser.ConfigParser()>>> fp = open(r"/root/test/test.conf", "r")>>> ; config.readfp(fp)
>>> セクション = config.sections()
>>> セクションを印刷します
>>>コードは次のとおりです
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>[b]</li><li>y1 = 10</li><li>x2 = 20</li><li>z1 = 30</li><li></li><li>[a]</li><li>x2 = 40</li><li>z2 = 10</li><li>y1 = 10</li></ol>
に示すように、上記の出力から、構成ファイルのセクション順序は b, a ですが、実際の出力セクションは a, b であることがわかります。一般的なシナリオでは問題ありませんが、含まれるシナリオでは、たとえば b が一般的な構成で、a が特殊な構成で、a の構成が b の一部の構成項目の内容をオーバーライドする可能性がある場合、次の時点で問題が発生します。この時。この問題の根本的な原因は、ConfigParser がデフォルトで解析されたデータを保存するために dict を使用し、dict 自体が順序付けされていないことです。実際には、キー値の順序に従って保存されるため、a と b の順序が表示されます。これにより、構成ファイルの順序が狂う可能性もあります。
実際、公式ドキュメントによると、ConfigParser の dict_type パラメータを設定し、対応する辞書タイプを変更することで、このシーケンスの問題を解決できます。 Changedinversion2.6:dict_typewasadded.
Changedinversion2.7:Thedefaultdict_typeiscollections.OrderedDict.allow_no_valuewasadded テスト後、Python 2.7 バージョンでは構成ファイルの順序が狂わないため、2.7 パラメータを Python に渡すことができます。 2.6バージョン。以下に示すように:
[root@stcell03 test]# python
Python 2.6.6 (r266:84292、11 月 22 2013、12:16:22)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] linux2 の場合
「ヘルプ」、「著作権」、「クレジット」、または「ライセンス」と入力してください。
>>> コレクションから import OrderedDict
>>> config = ConfigParser.ConfigParser(dict_type=OrderedDict)
>>> fp = open(r"/root/test/test.conf", "r")
>>>
>>> セクション = config.sections()
>>> セクションを印刷します
['b', 'a']
>>>
具体的なコードは次のとおりです:
http://www.bkjia.com/PHPjc/1108024.html
www.bkjia.com
本当
http://www.bkjia.com/PHPjc/1108024.html技術記事 ConfigParser は構成ファイルを順不同で書き込みます。 Centos6.5 環境では、通常、ConfigParser は構成ファイルの解析に使用されます。 Centos6.5のPythonバージョンはPython 2.6.6です。 一般的なアプリケーションの場合...