通过锚点目录,定位项目根目录(项目路径),在任何文件中执行路径获取函数,得到的结果都是正确且唯一的。
.idea
是它默认必然生成的目录,且它总是在项目根目录下,所以,我们可以通过以当前文件(任何文件都可以)开始向上遍历,直至定位到某个目录,它有一个子目录名为.idea
即可 def get_project_rootpath():
"""
获取项目根目录。此函数的能力体现在,不论当前module被import到任何位置,都可以正确获取项目根目录
:return:
"""
path = os.path.realpath(os.curdir)
while True:
for subpath in os.listdir(path):
# PyCharm项目中,'.idea'是必然存在的,且名称唯一
if '.idea' in subpath:
return path
path = os.path.dirname(path)
也可以写简单一点
def get_project_rootpath():
"""
获取项目根目录。此函数的能力体现在,不论当前module被import到任何位置,都可以正确获取项目根目录
:return:
"""
path = os.path.realpath(os.curdir)
while True:
# PyCharm项目中,'.idea'是必然存在的,且名称唯一
if '.idea' in os.listdir(path):
return path
path = os.path.dirname(path)
那么,当使用的是vsCode构成的项目时,就可以把.idea
换为.vscode
,同理,任何其他工具构成的,都可以找到一个锚点目录,甚至可以是.git
等等。