我有十几个脚本,我在重复这个
# 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
)?
答案 0 :(得分:0)
导入的函数无法访问导入[function]的模块的全局变量。
relative_path()
函数无法访问__file__
的{{1}}。
您可以将其作为参数传递:
caller.py
答案 1 :(得分:0)
其实是有可能的。您可以像这样获取来电者的路径
import inspect
def relative_path(*x):
caller_path = inspect.stack()[1].filename
然后你就有了绝对路径的字符串(如果需要,建议使用 pathlib 而不是 os)
传递文件不是必需的,可能会造成混淆...