你如何循环遍历 python 目录并在根目录下停止一次

How can you loop through python directories and stop once at root

在 Python 中,我使用 while 循环来测试 CWD 是否是 git 存储库。如果不是,则更改 CWD (..) 并再次测试。

如果找到 git 存储库,则该功能将按预期运行。但是,如果未找到 git 存储库,while 循环将继续进行,因为 os.chdir('..') 不会生成错误,即使 CWD 位于 /.

def get_git_repo():
    path = os.getcwd()
    original_path = path
    is_git_repo = False
    while not is_git_repo:
        try:
            repo = git.Repo(path).git_dir
            is_git_repo = True
        except git.exc.InvalidGitRepositoryError:
            is_git_repo = False
            path = os.chdir('..')
    os.chdir(original_path)
    return repo

为了尝试解决这个问题,我添加了一个测试来检查 CWD 是否为 /,但这不起作用并且 while 循环仍在继续。

一旦 CWD 是 / 而不是 git 存储库,我如何退出该函数?

def get_git_repo():
    ...
        except git.exc.InvalidGitRepositoryError:
            is_git_repo = False
            if not path == '/':
                path = os.chdir('..')
            else:
                raise Exception("Unable to discover path to git repository.")
    ...

你的代码的问题是 os.chdir('..') return None,而不是当前路径。

修改后需要获取当前目录:

os.chdir('..')
path = os.getcwd()