我有十几个脚本,我在其中重复这个
# 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/