| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Python: Общие вопросы > Чтение данных из файлов ОС по относительным путям |
| Автор: cooluser 31.1.2007, 09:39 |
| Всем привет! Возникла следующая проблема, есть модуль, который читает данные из файликов, которые лежат в подкаталоге относительно каталога с модулем, т.е. примерно так: ** catalog1 *** python_module.py *** catalog2 **** file_in_catalog2.txt Т.е. внутри python_module.py есть такой код: f=file("catalog2/file_in_catalog2.txt") И это все прекрасно работает только тогда, когда python_module.py запускается из каталоге где он лежит, если текущий каталог какой-нибудь другой, то происходит ошибка при открытии файла, поскольку питон не может его найти. Как это можно победить? т.е. чтобы путь в модуле стал действительно относительным и ни от чего не зависел Добавлено @ 09:51 Ну или другими словами, есть ли в питон функция, которая будучи вызвана внутри модуля, возвращает полный абсолютный путь до этого модуля, независимо от того, как и откуда он запускался? |
| Автор: cooluser 31.1.2007, 11:50 |
| Спасибо, здорово помог |
| Автор: sir_Jack 31.1.2007, 22:58 | ||
альтернативы:
также можно посмотреть что лежит в sys.argv[0] и впихнуть в os.chdir() в самом начале скрипта |
| Автор: Daevaorn 31.1.2007, 23:00 |
а там не лежит разве путь к __main__ модулю? |
| Автор: sir_Jack 1.2.2007, 23:12 |
| да собственно команда os.chdir(sys.argv[0]) дает возможность считать все пути по директориям относительно скрипта т.е. не надо впринципе использовать абсолютные пути а вообще, где то я слышал что использовать os.chdir() при работе внутри скрипта и перемещению по диреткоряим - не слишком правильно |
| Автор: Daevaorn 1.2.2007, 23:46 | ||
cкрипта, который запустили т.е. __main__, а автору нужно относительно не __main__ скрипта |