python - 从调用脚本获取 __file__

标签 python path

我有十几个脚本,我在其中重复这个

# caller.py
THIS_FILE_DIR = os.path.dirname(os.path.realpath(__file__))
relative_path = lambda *x: os.path.join(THIS_FILE_DIR, *x)

我想将其移动到模块中,如下所示:

# module.py
def relative_path(*x):
    this_file_dir = os.path.dirname(os.path.realpath(__file__))
    return os.path.join(this_file_dir, *x)

但是我想得到__file__在调用脚本 ( caller.py ) 的范围内,而不是在模块 ( module.py ) 本身的范围内。有没有办法在不让调用脚本传入 __file__ 的情况下执行此操作(所以我的 relative_path() 方法只需要 *x )?

最佳答案

这实际上是可能的。您可以像这样获取调用者的路径

import inspect

def relative_path(*x):
    caller_path = inspect.stack()[1].filename

然后您将获得绝对路径字符串(如果需要,建议使用 pathlib 而不是 os)

传递文件不是必需的,而且可能会造成困惑......

关于python - 从调用脚本获取 __file__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47438289/

相关文章:

c# - Visual Studio c# 相对路径,程序搜索两个路径,即使它找到了正确的路径

python - 空列表的所有内置函数

Powershell:从 $file.Fullname 中减去 $pwd

python - __path__ 有什么用?

java - 获取正在运行的 JAR 文件的路径返回 "rsrc:./"

bash - 如何确保 Mongo 二进制文件在我的 PATH 中 - 在 Mac 上的 shell rc (~/.bashrc) 中

python - 如何在 Langchain 中传输代理的响应?

python - 加速Python应用行明智函数

python - 如何让列表中的随机值在 Python 中列表中的每个值至少具有给定数量的唯一性?

python - 用Python求解方程组