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

Joh*_*ohn 5 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
Run Code Online (Sandbox Code Playgroud)

谢谢。

jua*_*los 11

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

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


chu*_*ckx 6

为此,可以使用检查模块中getfile()功能。

例如,给定以下文件:

$ cat 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))

$ cat external_def.py
def bar():
  pass
Run Code Online (Sandbox Code Playgroud)

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

$ python inspect-example.py
/home/chuckx/code/stackoverflow/inspect-example.py
/home/chuckx/code/stackoverflow/external_def.py
Run Code Online (Sandbox Code Playgroud)