尽管给定了有效的 glob 模式,Python 的 Shutil.ignore_patterns 仍无法工作

问题描述 投票:0回答:1

我正在尝试编写一个脚本,我想为其复制 git 存储库,但没有

.git
文件夹。这是我的完整代码:

import shutil
shutil.copytree([src], [dst], ignore=shutil.ignore_patterns('**/.git/**'), dirs_exist_ok=True)

但是,这仍然是复制

.git
目录。我已经使用 Python
glob
包测试了给定的 glob,所以我知道它是有效的。我知道可以编写自己的函数来传递
ignore
参数,但是我仍然不明白为什么我的代码不起作用。 文档特别指出
ignore_patterns
接受glob样式模式,所以这应该基于我的理解。

python glob shutil copytree
1个回答
0
投票

传递给

ignore
回调函数的参数是目录名称和文件列表。由于您想忽略整个目录,因此您可以提供自己的函数来仅检查目录是否为
.git
,而不是使用 glob 模式。

def is_git_dir(dir, files):
    return ".git" in dir.split('/')

shutil.copytree([src], [dst], ignore=is_git_dir, dirs_exist_ok=True)
© www.soinside.com 2019 - 2024. All rights reserved.