Как прочитать файл конфигурации с помощью configparser Python?

работает над чтением внешнего файла конфигурации в python (3.7) с использованием модуля «configparser»

Пример файла конфигурации "config.ini"

[ABC]
ch0 = "C:/Users/utility/ABC-ch0.txt"
ch1 = "C:/Users/utility/ABC-ch1.txt"

[settings]
script = "C:/Users/OneDrive/utility/xxxx.exe"
settings = "C:/Users/OneDrive/xxxxxxConfig.xml"

вот мой пример кода, который я пробовал

import configparser
config = configparser.ConfigParser()

config.read('config.ini')
ch0 = config.get('ABC','ch0')
print(ch0)

вот код ошибки, который я получаю, не знаю, где я ошибаюсь

NoSectionError: No section: 'ABC'

любая помощь очень ценится .. спасибо заранее

Распечатайте возвращаемое значение config.read('config.ini') и опубликуйте результат.

Klaus D. 29.04.2019 09:41

Код отлично работает для меня с образцом ini, который вы предоставили для меня python 3.7

Devesh Kumar Singh 29.04.2019 09:47

Я подозреваю, что, поскольку вы указываете относительный путь к файлу конфигурации, вы не читаете ожидаемый. Вы должны добавить отладочную печать с помощью print(os.getcwd())

Serge Ballesta 29.04.2019 09:47

Ваш файл python и config.ini находятся на одном пути? если нет, поместите свой config.ini в путь к файлу python. а затем запустите скрипт. он должен работать

Nithin 29.04.2019 09:48

Да, например, если я укажу неправильный путь, например. config.read('/xyz/config.ini'), я получаю сообщение об ошибке configparser.NoSectionError: No section: 'ABC', поэтому укажите правильный путь к config.ini, и все будет в порядке! Я попробовал это в своем ответе ниже, и это работает! Проверьте это! @pbch

Devesh Kumar Singh 29.04.2019 10:51
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
5
7 414
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Похоже, проблема не в том, чтобы найти config.ini в правильном месте, вы можете избежать этого, выполнив os.getcwd.

import configparser
import os
config = configparser.ConfigParser()

#Get the absolute path of ini file by doing os.getcwd() and joining it to config.ini
ini_path = os.path.join(os.getcwd(),'config.ini')
config.read(ini_path)
ch0 = config.get('ABC','ch0')
print(ch0)
#"C:/Users/utility/ABC-ch0.txt"

спасибо за помощь, это сработало, это была проблема с config.ini, указывающим на неправильное местоположение.

Pbch 29.04.2019 10:57

Не волнуйтесь! Я видел, что вы приняли, а затем не приняли мой ответ @Pbch, что-то не сработало в моем ответе?

Devesh Kumar Singh 29.04.2019 10:58
Ответ принят как подходящий

Ваш код абсолютно в порядке.

Эта строка:

config.read('config.ini')

пытается прочитать файл из того же каталога, что и файл .py, который вы запускаете. Итак, у вас есть 3 варианта:

  1. переместите файл config.ini рядом с файлом .py
  2. использовать правильный относительный путь при чтении файла
  3. использовать абсолютный путь при чтении файла [абсолютно не рекомендуется (из соображений переносимости)]

спасибо за помощь, это сработало, это была проблема с config.ini, указывающим на неправильное местоположение.

Pbch 29.04.2019 10:57

@Pbch Рад, что смог помочь :)

ruohola 29.04.2019 10:58

Привет @Pbch, я видел, что ты принял, а затем не принял мой ответ, что-то не сработало в моем ответе?

Devesh Kumar Singh 29.04.2019 11:15

Другие вопросы по теме