Почему python configParser.read может использовать только имя файла в качестве параметра для чтения файла конфигурации
Моя структура каталогов пакета python показана ниже:
./my_package
|---./lib
| |----__init__.py
| |----tools.py
|
|----__init__.py
|----my_package.py
|----setting.conf
В tools.py:
import ConfigParser
config = ConfigParser.RawConfigParser()
config.read('setting.conf')
debug = config.getboolean('default', 'debug')
Я не знаю, почему config.read работает. Я могу получить значение отладки в разделе по умолчанию.
1 ответ
Ваш тест работает, потому что файл конфигурации находится в текущем каталоге, потому что вы запускаете свой основной модуль из каталога файла конфигурации.
Но если вы используете другой основной файл, расположенный где-то еще, это может дать сбой.
Вот простой способ заставить его работать в любом случае: поскольку ваш инструмент находится на один уровень ниже файла конфигурации, путь к файлу конфигурации можно рассчитать следующим образом из tools.py
модуль:
conf_file = os.path.join(os.path.dirname(os.path.dirname(__file__)),'setting.conf')
os.path.dirname(__file__)
дает каталог, где tools.py
расположен. Выполните еще один dirname
чтобы получить каталог, в котором находится файл conf. Теперь вычислите абсолютное имя файла конфигурации, используя os.path.join