PyCharm项目获取项目路径的方法

思路

通过锚点目录,定位项目根目录(项目路径),在任何文件中执行路径获取函数,得到的结果都是正确且唯一的。

一例胜千言

  • 比如main.py要import进来一个模块ui.py
  • 因为import进来的文件,相当于是以文本方式复制进来,所以它原本的相对路径是以ui.py为参照,但在main.py中执行路径相关的函数时,路径参照物变成main.py了,这点尤其要注意
  • 但不论相对位置是以哪个文件为参照,总有一些目录是固定不变的,以PyCharm项目为例,.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等等。

你可能感兴趣的:(Python,pycharm,intellij-idea,python,vscode)