2009-08-22 5 views
1

Предположим, у меня есть файлы a.py и b.txt в том же каталоге. Я не могу garuntee , где этот каталог, но я знаю, что b.txt будет в том же каталоге, что и a.py. a.py нужно получить доступ к b.txt, как бы мне найти путь к b.txt? Что-то вроде «./b.txt» не будет работать, если пользователь запускает программу из каталога, кроме того, он сохраняется вPython, найти файл в том же каталоге

ответ

4

Если вы хотите расположение основного сценария, даже из кода, который может быть запущен в импортированном модуле, вам нужно использовать sys.argv[0], а не __file__. (sys.argv[0] всегда путь к основному сценарию, см http://docs.python.org/library/sys.html#sys.argv)

Если вы хотите, местоположение текущего модуля, даже если он был импортирован какой-либо другой сценарий, вы должны использовать __file__ как говорит Мартин.

Вот способ использовать sys.argv[0]:

import os, sys 
dirname, filename = os.path.split(os.path.abspath(sys.argv[0])) 
print os.path.join(dirname, "b.txt") 
4

Используйте __file__ переменную:.

os.path.join(os.path.dirname(__file__), "b.txt") 
Смежные вопросы