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

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

FILE.INI

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

Файл Python:

 # read file and if not exists ini = iniFile( 'FILE.INI' ) # Get and Print Config Line "default_path" getLine = ini.default_path # Print (string)/path/name print getLine # Append new line and if exists edit this line ini.append( 'default_path' , 'var/shared/' ) ini.append( 'default_message' , 'Hey! help me!!' ) 

ОБНОВЛЕНИЕ FILE.INI

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

  • TypeError: получил несколько значений для аргумента
  • Как изменить переменную после того, как она уже определена в Python
  • Первичная факторизация - список
  • Сохранение памяти Py3k, возвращая итераторы, а не списки
  • python tkinter возвращает значение из функции, используемой в команде
  • Импорт bs4 в Python 3.5
  • Подпроцесс python check_output возвращает ненулевой статус выхода 1
  • Как преобразовать набор последовательностей ДНК в последовательности белка, используя программирование на питоне?
  • 5 Solutions collect form web for “Как читать и писать INI-файл с Python3?”

    Это может быть началом:

     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) 

    Дополнительную информацию вы можете найти в официальной документации .

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

    Входной файл, 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 

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

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

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

    Стандартный ConfigParser обычно требует доступа через config['section_name']['key'] , что не представляет config['section_name']['key'] . Небольшая модификация может предоставить доступ к атрибутам:

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

    AttrDict – это класс, производный от dict который обеспечивает доступ через ключи словаря и доступ к атрибуту: это означает, что ax 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 сохраняет все комментарии и порядок членов и разделов
    • Многие полезные методы и опции для работы с файлами конфигурации (например, метод «перезагрузки»)
    • Полная поддержка Unicode

    У этого есть некоторые отступления:

    • Вы не можете установить разделитель, он должен быть = … ( запрос pull )
    • У вас не может быть пустых значений, ну вы можете, но они выглядят любимыми: fuabr = вместо просто fubar который выглядит странно и неправильно.
    Interesting Posts

    Проблемы классификации изображений в режиме реального времени Python с Neural Networks

    Справка – Указатели функций в Python

    Как сохранить прогрессивную jpeg с помощью Python PIL 1.1.7?

    Простой, универсальный и повторно используемый диалог ввода (иногда называемый диалогом ввода) в PyGTK

    Tornado потокового HTTP-ответа, поскольку AsyncHTTPClient получает куски

    Правильное размещение цветной панели относительно геоосевых (картографических)

    Как я могу получить цвет последней фигуры в matplotlib?

    SQLAlchemy: таблица отношений с составным первичным ключом

    Python threading – возврат управления терминалу при сохранении рамки

    Python threading.thread.start () не возвращает управление основной теме

    Изменение статуса функции декоратора от метода к функции

    Django, что лучший, самый быстрый способ получить только первый и последний элемент от чего-то, Customer.objects.xxxx

    Python Индекс структуры данных Начните с 1 вместо 0?

    Почему + = ведет себя непредсказуемо в списках?

    Проверка интерактивной оболочки в скрипте Python

    Python - лучший язык программирования в мире.