1

ちょっと思ったんです。*.ini ファイルにセクションを作成して、キーなしで値のみを保存する機会はありますか? 私は、使用されているポートのリストを localhost および他のサーバーに保存する予定で、私のリストは次のようになります。

[servers]
localhost:1111
localhost:2222
localhost:3333
someserver:2222
someserver:3333

今のところ、python はサーバー名をキーとして、ポートを値として扱います。しかし、最悪のことは、その呼び出しです

print config.items('servers')

これだけを返します:

localhost:3333
someserver:3333

これは間違っていますが、構成で : を置き換えることで処理できますが、それでも値のキーが必要です。それを正しく行う方法はありますか?

4

5 に答える 5

1

オプション allow_no_value がありますが、「:」が値の区切り文字であることを避けることはできません。これは ConfigParser.py にあります。

OPTCRE = re.compile(
    r'(?P<option>[^:=\s][^:=]*)'          # very permissive!
    r'\s*(?P<vi>[:=])\s*'                 # any number of space/tab,
                                          # followed by separator
                                          # (either : or =), followed
                                          # by any # space/tab
    r'(?P<value>.*)$'                     # everything up to eol
    )

私の頭に浮かぶ唯一の解決策:

[servers]

s1 = localhost:1111
s2 = localhost:2222
s3 = localhost:3333
s4 = someserver:2222
s5 = someserver:3333
于 2013-06-27T11:56:36.933 に答える
1

サーバーをカンマ区切りのリストに保存できます。

[servers] 
server_list = localhost:1111, localhost:2222, localhost:3333, someserver:2222, someserver:3333

それを次のようなリストに読み込みます

from ConfigParser import ConfigParser

cp = ConfigParser()
cp.read('derp.config')
print cp.items('servers')[0][1].split(', ')

出力する

['localhost:1111', 'localhost:2222', 'localhost:3333', 'someserver:2222', 'someserver:3333']
于 2013-06-27T12:24:08.120 に答える