我正在尝试实施DIR-COPY.我的意见是这样的..
source = D/Test/Source
Target = D/Test/Target
Ignore_Pattern = '*.exe'
Exclude_Sub_Folder = D/Test/Source/Backup,D/Test/Source/Backup2
Run Code Online (Sandbox Code Playgroud)
我可以使用copytree中的 ignore属性忽略.exe文件 这样做了
shutil.copytree(source , Target ,ignore=shutil.ignore_patterns(Ignore_Pattern))
Run Code Online (Sandbox Code Playgroud)
我不知道如何排除源目录中的一些子文件夹.
请帮忙.....
谢谢
您可以忽略名称为Backup或Backup2的所有文件夹:
shutil.copytree(source , Target ,ignore=shutil.ignore_patterns(Ignore_Pattern, "Backup", "Backup2"))
Run Code Online (Sandbox Code Playgroud)
"但我有多个名为'Backup'的文件夹,我特别想忽略Test/Source目录中的那个",你说.在这种情况下,您需要提供一个自定义忽略函数来调查完整路径.
to_exclude = ["D:/Test/Source/Backup", "D:/Test/Source/Backup2"]
#ignores excluded directories and .exe files
def get_ignored(path, filenames):
ret = []
for filename in filenames:
if os.path.join(path, filename) in to_exclude:
ret.append(filename)
elif filename.endswith(".exe"):
ret.append(filename)
return ret
shutil.copytree(source , Target ,ignore=get_ignored)
Run Code Online (Sandbox Code Playgroud)
(请注意to_exclude为您的特定操作系统使用正确的路径分隔符.您不希望包含"Test\Source\Backup",因为您使用了错误的斜杠.)
| 归档时间: |
|
| 查看次数: |
2684 次 |
| 最近记录: |