4

マシン構成ファイルであると思われる default.conf ファイルからいくつかの変数を取得する python スクリプトを継承しました。

スクリプトの一部は、.conf ファイルから構成キーを取得し、可能なオプションのリストがあることを期待していますが、現在はオプションが 1 つしかなく、複数のオプションがあるため、それを作成する方法がわからない.

[syndication]
name = Test Name
title = Test Title
categories = Category 1

したがって、上記の例では、構成キーはsyndicationであり、複数のオプションを追加しようとしている変数は ですcategory

ありがとう!

4

4 に答える 4

5

1行に収まる値が少なすぎる場合は、他のフェローが例示するようにコンマで区切ることを選択します。そうでない場合、RFC822標準に従って、タブで始まる行で値を分割できます。

settings.conf:

[syndication]
name = Test Name
title = Test Title
categories =
    Category 1
    Category 2
    Category 3

settings.py :

#!/usr/bin/python
import ConfigParser

config = ConfigParser.ConfigParser()

# Reading
config.readfp(open('settings.conf'))
categories = config.get('syndication', 'categories').strip().split('\n')

# Appending
categories.append('Category 4')

# Changing
config.set('syndication', 'categories', '\n' + '\n'.join(categories))

# Storing
config.write(open('settings.conf', 'w'))

新しいsettings.conf :

[syndication]
name = Test Name
title = Test Title
categories = 
    Category 1
    Category 2
    Category 3
    Category 4

注::またはの後の最初の行に値を入れることができますが、値=のリストであるため、ファイルを手動で編集する必要がある場合は、2 行目から開始する方が「読みやすい」と思います。

于 2012-07-23T17:30:52.707 に答える
0

構成ファイルにリスト型がないと思います。ただし、コンマ区切り値のようなことはできます。

[syndication]
name = Test Name
title = Test Title
categories = Category 1, Category 2

次に、コードで値を で分割します。

values = [value.strip() for value in cfg.get('syndication', 'categories').split(',')]
于 2012-07-23T16:32:10.827 に答える
0

.confファイルをどのように読んでいるのかについて言及していないので、 ConfigParser.

categoriesタプルに設定して を使用してみConfigParser.writeましたが、結果のファイルでタプルの文字列表現になりました。これConfigParserは、複数のオプションをサポートしていないことを意味します。

オプションはいつでも手動で分割できます。

categories = [option.strip() for option in config.get('syndication', 'categories').split(',')]
于 2012-07-23T16:35:34.630 に答える
0

おそらく、Python のロギング構成ファイル形式と同じように機能していますか? この場合categories、カンマ区切りのリストになります (構成ファイルをログに記録する場合、すべての項目は構成ファイルの特定のセクションを参照しています)

于 2012-07-24T05:47:21.450 に答える