configparser - Pythonプログラムのユーザーエディット設定を管理する


目次

  • What is ConfigParser?
  • What does a ConfigParser INI file look like?
  • How to read configs?
  • how to write configs?
  • ユーザー設定可能な設定は、大きなアプリケーションに重要です.彼らはあなたのアプリケーションをより使いやすく、アプリケーションの効率を向上させる.
    しかし、あなたは好奇心旺盛かもしれません、どこで、どのようにそれらの構成を保存するには?
    ここで紹介しますConfigParser , Python 3の標準ライブラリの一つです.Pythonアプリケーションの設定を保存するために使用されます.

    ConfigParserは何ですか?🤔


    ConfigParser Python 3の標準ライブラリ( Python 2では)pip install configparser ) Pythonプログラムの基本設定言語を実装します.
    ConfigParserで使用されるファイル形式はINI これは古いバージョンのマイクロソフトWindowsで使用される形式と似ています.
    構成ファイルは、セクションに編成され、各セクションでは、構成データの名前の値のペアを含めることができます.セクション名は[] 登場人物ペアは: or = . コメントの開始# または; .

    ConfigParser INIファイルはどのようなものですか?🧐


    からの例を考えるofficial docs 完璧なものです.
    [Simple Values]
    key=value
    spaces in keys=allowed
    spaces in values=allowed as well
    spaces around the delimiter = obviously
    you can also use : to delimit keys from values
    
    [All Values Are Strings]
    values like this: 1000000
    or this: 3.14159265359
    are they treated as numbers? : no
    integers, floats and booleans are held as: strings
    can use the API to get converted values directly: true
    
    [Multiline Values]
    chorus: I'm a lumberjack, and I'm okay
        I sleep all night and I work all day
    
    [No Values]
    key_without_value
    empty string value here =
    
    [You can use comments]
    # like this
    ; or this
    
    # By default only in an empty line.
    # Inline comments can be harmful because they prevent users
    # from using the delimiting characters as parts of values.
    # That being said, this can be customized.
    
        [Sections Can Be Indented]
            can_values_be_as_well=True
            does_that_mean_anything_special=False
            purpose=formatting for readability
            multiline_values=are
                handled just fine as
                long as they are indented
                deeper than the first line
                of a value
            # Did I mention we can indent comments, too?
    
    それはすべて正しいと言う?

    ConfigParserからのconfigの読み込み方法📄


    これは私たちが使っているサンプルファイルですconfigurations.ini :
    [DEFAULT]
    host=localhost
    log=True
    
    [MySQL]
    PORT=4000
    user=john
    passwd=IDontwannatellyouhehe123
    
    [Postgresql]
    user=peter
    PORT=3000
    passwd=AnotherPasswd22223
    
    まず、ConfigParserモジュールをインポートし、ConfigParserオブジェクトを作成し、INI ファイル
    import configparser
    
    configs = configparser.ConfigParser()
    configs.read('configurations.ini')
    
    今、コンフィグはオブジェクトとして初期化されます.どのように値を設定できるかを見てみましょう.
    # Get a value from a section
    configs['Postgresql']['user'] # returns: 'peter'
    
    # Assign it to variable
    user = configs['Postgresql']['user']
    print(user) # returns: 'peter'
    
    INIファイルにあるセクションをチェックするには、次のようにします.
    # List all sections in the INI file
    configs.sections() # returns: ['MySQL', 'Postgresql']
    
    # See specific section is in the INI file
    'MySQL' in configs # returns: True
    'NotExistingSection' in configs # returns: False
    
    セクションのすべての値名を見るには
    for key in config['MySQL']:
        print(key)
    # Returns: 
    # port
    # user
    # passwd
    # host
    # log
    
    セクションで値の辞書を生成することもできます.
    configs.items('MySQL') # returns: [('host', 'localhost'), ('log', '1'), ('port', '4000'), ('user', 'john'), ('passwd', 'IDontwannatellyouhehe123')]
    
    今、あなたは混乱するかもしれませんMySQL セクションhost and log 値?そこにタイポはありますか.
    ConfigParserのマジックです.値はDEFAULT セクション(セクションタイトルが大文字小文字を区別することに注意してください).
    さて、あなたが気づくかもしれないもう一つの理由はPORT 値は小文字で印刷されますか?
    値の名前は大文字小文字を区別しないので、すべての文字は小文字で格納されます.
    ここでの最後の注意点:ConfigParser内のすべての値は文字列として格納されます.
    したがって、他のデータ型である場合は手動で変換する必要があります.これには組み込み関数があります:
    configs['MySQL'].get_boolean('log') # returns: True
    configs['MySQL'].get_int('port') # returns: 4000
    configs['MySQL'].get_float('port') # returns: 4000.0
    
    ヒントget_boolean() - このメソッドは大文字小文字を区別せず、' yes '/' no ', ' on '/' off ', ' true '/' false ', ' 1 '/' 0 'からboolean値を認識します.

    ……さて、コンフィグを読む方法を知っています。✍


    それはスーパー簡単なだけで、それらをする必要があります任意の文字列を割り当て、そしてconfigurations.ini !
    ヒアゴーゴー😎:
    # Assign the values you want 
    configs['MySQL']['user']='sam'
    
    # Or you can use the `set` method
    configs.set(section='Postgresql', option='log', value='False')
    
    # Write it to the file
    with open('configurations.ini', 'w') as configfile:
        configs.write(configfile)
    
    完了!今、あなたの設定はconfigurations.ini .

    私が新しいセクションを望むか、セクションの名前を変えるならば、どうですか?


    使えますadd_section 新しいセクションを作成するには、次のようにします.
    configs.add_section('New Section Name')
    
    よく、セクションを直接名前を変更する方法はありません.しかし、あなたがすることは新しいセクションを作成して、新しいセクションにコピー値を作成して、古いセクションを削除することです.
    # Create a new section
    configs.add_section('New Section')
    
    # Copy values to the new section
    for item in configs.items('MySQL'):
        configs.set('New Section', item[0], item[1])
    
    # Delete the new section
    configs.remove_section('MySQL')
    
    読書ありがとう!😎
    あなたがこの記事が役に立つとわかるならば、私にコーヒーを買うことを考えてください!