【发布时间】:2020-12-07 08:51:44
【问题描述】:
参考这里的问题Relative paths in Python。我也有类似的问题。
我的项目结构:
proj
|
|--config
| |--ENV
|
|--folder1
| |--UI
| |--test2.py
|
|--test1.py
我想使用 test1.py 和 test2.py 访问 ENV 文件,但我要使用相对地址,这样我每次移动项目时都不必更改代码。
import inspect
import os
dirname = os.path.dirname(os.path.abspath(inspect.stack()[0][1]))
filename = os.path.join(dirname, 'config/ENV')
上面的代码在 test1.py 中运行良好,但在 test2.py 中失败,因为现在 dirname 已更改。
我正在寻找可以在这两个文件上使用的代码。目前我只有一个想法是在\的基础上拆分地址找到proj并附加config/ENV有没有更好更干净的方法?
C:\Users\User1\proj\config/ENV -- at test1.py
C:\Users\User1\proj\folder1\UI\config/ENV -- at test2.py
我目前的解决方案:
dirname = os.path.dirname(__file__)
PROJECT_NAME = "proj"
x = dirname[:dirname.find(PROJECT_NAME) + len(PROJECT_NAME)]
filename = os.path.join(x, 'config/ENV')
【问题讨论】:
-
@spectras 链接建议在我的情况下使用不同的路径(使用../..)我每次尝试从不同的入口点访问 ENV 文件时都必须更改代码,因为我的项目有多个入口点。
-
您将使用
__file__技术来获取项目根目录的完整路径。从那里你可以添加你的路径,总是一样的。
标签: python python-3.x