Как читать и писать INI файл с Python3?



мне нужно читать, писать и создавать INI файл с Python3.



.INI



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


Python File:



#    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!!' )


обновлено

1063   5  

5 ответов:

Это может быть что-то начинать с:

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.

вот полный пример чтения, обновления и записи.

входной файл, тест.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

исходный входной файл остается нетронутым.

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

стандартная библиотека Python может быть полезна в этом случае.

стандартный 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 is a['x']

мы можем использовать этот класс в ConfigParser:

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

и теперь мы получаем application.ini С:

[general]
key = value

как

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

ConfigObj является хорошей альтернативой ConfigParser, который предлагает гораздо больше гибкости:

  • вложенные разделы (подразделы), на любом уровне
  • список значений
  • несколько значений строки
  • строку интерполяции (замена)
  • интегрирован с мощной системой проверки, включая автоматическую проверку типа / преобразование повторяющихся разделов и позволяя значения по умолчанию
  • при записи конфигурационных файлов, ConfigObj сохраняет все комментарии и порядок членов и разделов
  • много полезных методов и опций для работы с конфигурационными файлами (например, метод 'reload')
  • полная поддержка Unicode

Он имеет некоторые недостатки:

  • вы не можете установить разделитель, он должен быть =... (pull-запрос)
  • вы не можете иметь пустые значения, ну вы можете, но они выглядят как: просто fubar что выглядит странно и неправильно.

Comments

    Ничего не найдено.