gpt4 book ai didi

python - 在 Google App Engine 中查找相对路径的好方法是什么?

转载 作者:太空狗 更新时间:2023-10-30 02:50:44 26 4
gpt4 key购买 nike

所以我已经用 GAE 完成了琐碎的“预热”应用程序。现在我想构建一些具有更复杂目录结构的东西。类似的东西:

siteroot/
models/
controllers/
controller1/
controller2/
...
templates/
template1/
template2/
...

..等等 Controller 将是处理请求的 Python 模块。然后他们需要在相关文件夹中找到(Django 风格的)模板。我见过的大多数演示应用程序都会像这样解析模板路径:

path = os.path.join(os.path.dirname(__file__), 'myPage.html')

...__ file __ 属性解析为当前正在执行的脚本。因此,在我上面的示例中,如果 Python 脚本在 controllers/controller1/中运行,那么“myPage.html”将解析到同一目录——controllers/controller1/myPage.html——我宁愿将我的Python 代码和模板。

我一起破解的解决方案感觉......很老套:

base_paths = os.path.split(os.path.dirname(__file__))
template_dir = os.path.join(base_paths[0], "templates")

所以,我只是剪掉当前运行脚本路径的最后一个元素,并将模板目录附加到新路径。我见过的用于解析 Python 路径的其他(非 GAE 特定的)解决方案似乎非常重量级(例如将路径拆分为列表并进行相应的操作)。 Django 似乎对此有一个答案,但我宁愿坚持使用 GAE API,也不愿创建完整的 Django 应用程序并针对 GAE 对其进行修改。

我假设任何硬编码都不会启动,因为这些应用程序存在于 Google 的无限服务器场中。那么有什么更好的方法呢?

最佳答案

您不能像 Toni 建议的那样使用相对路径,因为您无法保证从工作目录到应用程序目录的路径保持不变。

正确的解决方案是照原样使用 os.path.split,或者使用类似的东西:

path = os.path.join(os.path.dirname(__file__), '..', 'templates', 'myPage.html')

我常用的方法是使用上述方法生成模板目录的路径,并将其存储为我的 Controller 对象的成员,并提供一个“getTemplatePath”方法,该方法采用提供的文件名并将其与基本名称连接起来。

关于python - 在 Google App Engine 中查找相对路径的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com