Python Glossary English

все Python 3inspectфункция

inspect.getfile()

исходный код

Имя файла, в котором определён модуль, класс или функция. Для встроенных объектов бросает TypeError.

Синтаксис

inspect.getfile(object)

Функция берёт имя из атрибутов объекта и не проверяет, что файл существует: для кода из exec() вернётся '<string>', для расширения — путь к .so или .pyd. Встроенные модули вроде sys, функции вроде len и классы вроде int дают TypeError, а не None. Если нужен именно читаемый .py, берите getsourcefile() — она вернёт None, когда исходника нет. Путь абсолютный и зависит от машины.

Примеры

import importlib, inspect, pathlib, sys
pathlib.Path('shapes.py').write_text('def area(r):\n    return 3.14 * r * r\n',
                                     encoding='utf-8')
sys.path.insert(0, '.')
importlib.invalidate_caches()
import shapes
print(inspect.getfile(shapes.area))  # → ? полный путь к shapes.py
print(pathlib.Path(inspect.getfile(shapes.area)).name)  # → shapes.py
import inspect, sys
namespace = {}
exec('def dyn(): pass', namespace)
print(inspect.getfile(namespace['dyn']))  # → <string> — файла нет, ошибки тоже
try:
    inspect.getfile(sys)
except TypeError as e:
    print(e)  # → <module 'sys' (built-in)> is a built-in module

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности