gpt4 book ai didi

python : Name of the calling file in different file

转载 作者:行者123 更新时间:2023-12-01 05:41:19 25 4
gpt4 key购买 nike

我有四个文件 a.py、b.py、c.py 和 d.py。 d.py 中的每个文件访问方法

import d
a.py
d.init(self)

import d
b.py
d.init(self)

import d
b.py
d.init(self)

如果没有给出与文件名相关的参数,如何在 d 中查找从哪个文件调用。仅给出 self

例如,如果从 b.py 进行调用,则在 d.py 中,它应该返回带有完整路径的 b.py

最佳答案

使用 inspect.stack() function :

from inspect import stack

print stack()[1][1]

返回值stack是一个包含 (frame, filename, lineno, function, code_context, index) 的元组列表值。

stack()[0]是您当前的函数,[1]是调用框架等。 code_context string(默认情况下)是源代码的 1 行,但是如果您将更大的数字传递给 stack()将提供更多上下文:

# print 5 lines of context, 3rd line will be the 'current' line.
print stack(5)[1][-2]

请注意,为堆栈中的每个条目收集代码上下文的成本较高;为每个条目读取源文件。将上下文设置为 0如果您不使用此功能。

演示:

$ cat a.py 
import d
d.init()
$ cp a.py b.py; cp a.py c.py
$ cat d.py
import inspect

def init():
print inspect.stack(0)[1][1]
$ python a.py
a.py
$ python b.py
b.py

关于 python : Name of the calling file in different file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17456192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com