Я также попытаюсь решить несколько вариантов этого вопроса:
(Некоторые из этих вопросов заданы на SO, но были закрыты как дубликаты и перенаправлены здесь.)
__file__
Для импортированного модуля:
import something
something.__file__
вернет абсолютный путь модуля. Однако, учитывая следующий сценарий foo.py:
#foo.py
print '__file__', __file__
Вызов его с помощью «python foo.py» Вернет просто «foo.py». Если вы добавите shebang:
#!/usr/bin/python
#foo.py
print '__file__', __file__
и вызовите его с помощью ./foo.py, он вернет './foo.py'. Вызвать его из другого каталога (например, поместить foo.py в строку каталога), затем вызвать либо
python bar/foo.py
, либо добавить shebang и выполнить файл напрямую:
bar/foo.py
вернет 'bar / foo.py' (относительный путь).
Теперь, перейдя оттуда, чтобы получить каталог, os.path.dirname(__file__)
также может быть сложным. По крайней мере, в моей системе он возвращает пустую строку, если вы вызываете ее из того же каталога, что и файл. ex.
# foo.py
import os
print '__file__ is:', __file__
print 'os.path.dirname(__file__) is:', os.path.dirname(__file__)
выведет:
__file__ is: foo.py
os.path.dirname(__file__) is:
Иными словами, он возвращает пустую строку, поэтому это не кажется надежным, если вы хотите использовать его для текущего файл (в отличие от файла импортированного модуля). Чтобы обойти это, вы можете обернуть его в вызов abspath:
# foo.py
import os
print 'os.path.abspath(__file__) is:', os.path.abspath(__file__)
print 'os.path.dirname(os.path.abspath(__file__)) is:', os.path.dirname(os.path.abspath(__file__))
, который выводит что-то вроде:
os.path.abspath(__file__) is: /home/user/bar/foo.py
os.path.dirname(os.path.abspath(__file__)) is: /home/user/bar
Обратите внимание, что abspath () НЕ разрешает символические ссылки. Если вы хотите это сделать, вместо этого используйте realpath (). Например, создавая символическую ссылку file_import_testing_link, указывающую на файл_import_testing.py, со следующим содержимым:
import os
print 'abspath(__file__)',os.path.abspath(__file__)
print 'realpath(__file__)',os.path.realpath(__file__)
выполняет печать абсолютных путей, например:
abspath(__file__) /home/user/file_test_link
realpath(__file__) /home/user/file_test.py
file_import_testing_link -> file_import_testing .py
@SummerBreeze упоминается с помощью модуля для проверки .
Это, похоже, работает хорошо и довольно кратким , для импортированных модулей:
import os
import inspect
print 'inspect.getfile(os) is:', inspect.getfile(os)
послушно возвращает абсолютный путь. Однако, чтобы найти путь к исполняемому скрипту, я не видел способа его использования.
Sidekicks Team Foundation неоценимы в контроле над сборками и слияниями.
Я создал инструмент, который упрощает создание связей между множеством рабочих элементов. Он также позволяет перемещать рабочие элементы между проектами.
Его можно найти здесь: WI Assitant
Я нашел клиент TFS « Диспетчер рабочих элементов TFS » с интересными функциями (например, древовидное представление, ссылки на назначенные рабочие элементы) для сортировки и фильтрации элементов и очень полезной визуализацией (очень хорошая панель задач , приборная панель).