我有一个here.py
,它获得了最近的文件夹名称:
import os
def here():
return os.path.basename(os.path.dirname(__file__))
我有app.py
会导入here.py
并将其命名为:
from this_app.somewhere import here
print(here.here())
最后,这是我的文件夹结构:
this_app
├ __init__.py
├ app.py
└ somewhere
├ __init__.py
└ here.py
因此您可以看到我运行app.py
时它将打印somewhere
,因为它正在执行here.py
中的代码
我想将代码保留在here.py
中,但是将其打印出文件夹app.py
所在的位置。换句话说,我想打印导入模块的文件的文件夹而不是文件夹模块所在的位置,即使我希望将决定打印内容的代码放在模块中。
我希望这是有道理的。 基本上,如何更改here.py
,以便在我调用app.py
时显示this_app
(即,它显示app.py
所在位置的文件夹名称) ?
(最后一个注意事项:我的实际用例比这要复杂得多,因此它不能求助于当前的工作目录,因为我可能从远离任何目录的目录中启动app.py。它必须是相对于导入here模块的文件,即app.py
。)
答案 0 :(得分:1)
__file__
属性是按模块定义的。您需要将调用模块的__file__
传递给here
here.py
import os
def here(calling_path):
return os.path.basename(os.path.dirname(calling_path))
并使用它:
from this_app.somewhere import here
print(here.here(__file__))