Python - выполнение скрипта, ошибки определения местоположения - PullRequest
1 голос
/ 02 января 2012

Используя модуль ConfigParser, я пытаюсь прочитать файл конфигурации, чтобы я мог безопасно позволить пользователям редактировать настройки приложения и обмениваться этими конфигурациями между сценариями.Это отлично работает для основного сценария.Однако существует вторичный сценарий, который вызывается, и он читает тот же файл конфигурации в том же месте, но возвращает ошибку, что местоположение не может быть найдено.Оба сценария находятся в одном каталоге, application/bin/ Файл конфигурации находится в application/conf/ Для успешного обращения к файлу конфигурации в основном сценарии я использую следующий код, который прекрасно работает.

config = ConfigParser.ConfigParser()
config.readfp(open('../conf/settings.conf'))

Когдавторичный скрипт выполняется с тем же кодом, который сообщает, что местоположение не существует?Я использовал модуль logger и записал его в журнал sys.path [0], который правильно вернул ту же папку bin, что и основной скрипт.Возможно, здесь есть что-то простое, чего мне не хватает?

Также приветствуются любые советы по устранению подобных проблем.

1 Ответ

1 голос
/ 02 января 2012

Вы можете использовать dirname и __file__:

from os.path import dirname, join
config = ConfigParser.ConfigParser()
config_fn = join(dirname(__file__), '..', 'conf', 'settings.conf')
config.read(config_fn)

В зависимости от того, как вы запускаете приложение (python bin / app.py или python app.py), «..» будет неправильным. Начиная с каталога файла .py, вы всегда сможете с помощью этого метода построить путь от .py к .conf.

...