你如何循环遍历 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()
在 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()