【发布时间】:2015-01-19 09:32:36
【问题描述】:
我有这个功能:
def relative_path(*paths):
return os.path.join(os.path.dirname(__file__), *paths)
如何更改它以返回相对于调用者的路径?
例如,如果我从另一个脚本调用 relative_path('index.html'),是否可以从隐式调用脚本的位置获取相对于脚本的路径,或者我是否需要修改 relative_path 以传递 __file__ 以及类似这个?
def relative_path(__file__, *paths):
return os.path.join(os.path.dirname(__file__), *paths)
【问题讨论】:
-
这些路径是否严格以调用者的目录开头?
-
您是在问如何确定调用者所在的脚本的路径吗?如果不是,调用者的路径是什么?
-
我不知道如何比“获取调用者的相对路径”更清楚。你能解释一下为什么不清楚吗?
-
为什么需要神奇地使用父文件位置?为什么不更明确地说明路径的基础? Flask 要求您使用当前模块名称 (
app = Flask(__name__)) 创建Flask()对象,以便它可以查找加载模板的路径 (sys.modules[name_passed_in].__file__)。这使它显式并且还允许您覆盖路径。不需要神奇的调用者查找。