Досі щоб дізнатися ім’я файлу, що зараз виконується чи шлях до нього, я використовував такі конструкції

1
2
3
4
import os

print(__file__)
print(os.path.abspath(__file__))

Та виявляється, що цей код буде виконуватися як очікується, не у всіх випадках. Наприклад, якщо ми маємо два модуля one.py (з вмістом, наведеним вище) і two.py, то під час запуску останнього з кодом

1
execfile('one.py')

отримаємо насправді назву і шлях для файлу two.py.

Такі кейси трапляються досить рідко, але для вирішення цієї проблеми можна скористатися модулем inspect

1
2
3
import inspect

print(inspect.getfile(inspect.currentframe()))

Цей фрагмент коду завжди буде повертати ім’я файлу модуля, з якого виконується код.

Ресурси