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等等。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值