【发布时间】:2019-04-02 07:46:35
【问题描述】:
如果文件a.py中有方法t1并且有一个文件b.py,它从a.py文件中调用方法t1。如何在t1 方法中获取b.py 文件的完整/绝对路径?
使用检查模块(就像这里:how to get the caller's filename, method name in python),我可以获得文件的相对路径,但它似乎不包含绝对路径(或者有一些其他属性对象,可以访问它?)。
举个例子:
a.py:
def t1():
print('callers absolute path')
b.py:
from a import t1
t1() # should print absolute path for `b.py`
【问题讨论】:
-
不应该
t1()返回a.py的绝对路径吗? -
所以你问如何将相对路径变成绝对路径...?
-
@DirtyBit 没有。要获取
a.py路径,您只需使用__file__或sys.path[0]。但我需要调用者的路径,而不是被调用方法的路径。 -
@Aran-Fey 如果它不返回绝对路径,那么是的。我想知道与
os.path.realpath结合使用是否会一直返回正确的绝对路径?原因realpath函数将当前工作目录与相对路径结合起来。 -
__file__始终是有效路径,即是的,它与当前工作目录相关。 (除非您在代码中更改了 CWD,但这是您自己的错……)
标签: python python-3.x path