복붙노트

[PYTHON] 어떻게 파이썬 3으로 INI 파일을 읽고 쓰는가?

PYTHON

어떻게 파이썬 3으로 INI 파일을 읽고 쓰는가?

파이썬 3으로 INI 파일을 읽고 쓰고 작성해야합니다.

FILE.INI

default_path = "/path/name/"
default_file = "file.txt"

파이썬 파일 :

#    Read file and and create if it not exists
config = iniFile( 'FILE.INI' )

#    Get "default_path"
config.default_path

#    Print (string)/path/name
print config.default_path

#    Create or Update
config.append( 'default_path', 'var/shared/' )
config.append( 'default_message', 'Hey! help me!!' )

업데이트 된 파일 .INI

default_path    = "var/shared/"
default_file    = "file.txt"
default_message = "Hey! help me!!"

해결법

  1. ==============================

    1.다음과 같이 시작할 수 있습니다.

    다음과 같이 시작할 수 있습니다.

    import configparser
    
    config = configparser.ConfigParser()
    config.read('FILE.INI')
    print(config['DEFAULT']['path'])     # -> "/path/name/"
    config['DEFAULT']['path'] = '/var/shared/'    # update
    config['DEFAULT']['default_message'] = 'Hey! help me!!'   # create
    
    with open('FILE.INI', 'w') as configfile:    # save
        config.write(configfile)
    

    자세한 내용은 공식 configparser 문서를 참조하십시오.

  2. ==============================

    2.다음은 완전한 읽기, 업데이트 및 쓰기 예제입니다.

    다음은 완전한 읽기, 업데이트 및 쓰기 예제입니다.

    입력 파일, test.ini

    [section_a]
    string_val = hello
    bool_val = false
    int_val = 11
    pi_val = 3.14
    

    작업 코드.

    try:
        from configparser import ConfigParser
    except ImportError:
        from ConfigParser import ConfigParser  # ver. < 3.0
    
    # instantiate
    config = ConfigParser()
    
    # parse existing file
    config.read('test.ini')
    
    # read values from a section
    string_val = config.get('section_a', 'string_val')
    bool_val = config.getboolean('section_a', 'bool_val')
    int_val = config.getint('section_a', 'int_val')
    float_val = config.getfloat('section_a', 'pi_val')
    
    # update existing value
    config.set('section_a', 'string_val', 'world')
    
    # add a new section and some values
    config.add_section('section_b')
    config.set('section_b', 'meal_val', 'spam')
    config.set('section_b', 'not_found_val', 404)
    
    # save to a file
    with open('test_update.ini', 'w') as configfile:
        config.write(configfile)
    

    출력 파일, test_update.ini

    [section_a]
    string_val = world
    bool_val = false
    int_val = 11
    pi_val = 3.14
    
    [section_b]
    meal_val = spam
    not_found_val = 404
    

    원래 입력 파일은 그대로 유지됩니다.

  3. ==============================

    3.http://docs.python.org/library/configparser.html

    http://docs.python.org/library/configparser.html

    이 경우 Python의 표준 라이브러리가 도움이 될 수 있습니다.

  4. ==============================

    4.표준 ConfigParser는 일반적으로 config [ 'section_name'] [ 'key']를 통해 액세스해야합니다. 이것은 재미 있지 않습니다. 조금 수정하면 속성 액세스가 제공 될 수 있습니다.

    표준 ConfigParser는 일반적으로 config [ 'section_name'] [ 'key']를 통해 액세스해야합니다. 이것은 재미 있지 않습니다. 조금 수정하면 속성 액세스가 제공 될 수 있습니다.

    class AttrDict(dict):
        def __init__(self, *args, **kwargs):
            super(AttrDict, self).__init__(*args, **kwargs)
            self.__dict__ = self
    

    AttrDict는 dict에서 파생 된 클래스이며 사전 키와 속성 액세스를 통해 액세스 할 수 있습니다. 즉 a.x는 [ 'x']

    ConfigParser에서이 클래스를 사용할 수 있습니다.

    config = configparser.ConfigParser(dict_type=AttrDict)
    config.read('application.ini')
    

    이제 우리는 application.ini를 다음과 같이 얻습니다.

    [general]
    key = value
    

    같이

    >>> config._sections.general.key
    'value'
    
  5. ==============================

    5.ConfigObj는 훨씬 더 많은 유연성을 제공하는 ConfigParser의 좋은 대안입니다 :

    ConfigObj는 훨씬 더 많은 유연성을 제공하는 ConfigParser의 좋은 대안입니다 :

    여기에는 몇 가지 단점이 있습니다.

  6. from https://stackoverflow.com/questions/8884188/how-to-read-and-write-ini-file-with-python3 by cc-by-sa and MIT license