14

Pythonでコードを書いています。次のデータを含む構成ファイルがあります。

[section1]
name=John
number=3

ConfigParser モジュールを使用して、この既存の confg ファイルを上書きせずに別のセクションを追加しています。しかし、以下のコードを使用すると:

config = ConfigParser.ConfigParser()
config.add_section('Section2')
config.set('Section2', 'name', 'Mary')
config.set('Section2', 'number', '6')
with open('~/test/config.conf', 'w') as configfile:
    config.write(configfile) 

ファイルを上書きします。以前のデータを削除したくありません。セクションをもう 1 つ追加する方法はありますか? 前のセクションのデータを先に取得して書き込もうとすると、セクションの数が増えるにつれて乱雑になります。

4

2 に答える 2

7

書き込みモードではなく追加モードでファイルを開きます。「w」の代わりに「a」を使用してください。

例:

config = configparser.RawConfigParser({'num threads': 1})
config.read('path/to/config')
try:
    NUM_THREADS = config.getint('queue section', 'num threads')
except configparser.NoSectionError:
    NUM_THREADS = 1
    config_update = configparser.RawConfigParser()
    config_update.add_section('queue section')
    config_update.set('queue section', 'num threads', NUM_THREADS)

    with open('path/to/config', 'ab') as f:
        config_update.write(f)
于 2015-02-23T20:23:25.350 に答える
4

コードの間に 1 つのステートメントを追加するだけです。

config.read('~/test/config.conf')

例:

import configparser

config = configparser.ConfigParser()
config.read('config.conf')
config.add_section('Section2')
config.set('Section2', 'name', 'Mary')
config.set('Section2', 'number', '6')
with open('config.conf', 'w') as configfile:
    config.write(configfile)

追加したい構成ファイルを読み取ると、ファイル内のデータで構成オブジェクトが初期化されます。次に、新しいセクションを追加すると、このデータが構成に追加されます...そして、このデータを同じファイルに書き込みます。

これは、構成ファイルに追加する方法の 1 つです。

于 2021-01-12T05:12:41.070 に答える