如何在 Python 中获取函数的路径?

新手上路,请多包涵

我想在 Python 中获取函数的文件路径。

怎么做?

例如,

 import keras.backend as K
y = K.resize_images(x, 2, 2, 'channels_last')
path = function(K.resize_images)
print(path)
#C:\Program Files\Python36\Lib\site-packages\keras\backend\tensorflow_backend.py

谢谢你。

原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 914
2 个回答

为此,您可以使用 inspect 模块 中的 getfile() 函数。

例如,给定以下文件:

inspect-example.py

 #!/usr/bin/python

import os
import inspect
import external_def

def foo():
  pass

print(os.path.abspath(inspect.getfile(foo)))
print(os.path.abspath(inspect.getfile(external_def.bar)))

external_def.py

 def bar():
  pass

执行 inspect_example.py 产生以下输出:

 $ python inspect-example.py
/home/chuckx/code/stackoverflow/inspect-example.py
/home/chuckx/code/stackoverflow/external_def.py

原文由 chuckx 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你想获取包含函数的文件的路径,你可以尝试以下代码,注意:此代码仅在对象类型为“函数”时有效

def get_path(func):
     if type(func).__name__ == 'function' :
         return func.__code__.co_filename
     else:
         raise ValueError("'func' must be a function")

原文由 juancarlos 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题