我正在尝试在 Python 中使用 shutil
复制目录树。
我是这样做的:
shutil.copytree(source,target,False,lambda x,y:[r for r in y if os.path.isfile(r)]);
其中 source
是源目录的路径,target
是一个不存在的目录的名称,source
的副本在其中> 将要发生。
第三个参数表示对符号链接(symbolic link)的处理。
最后一个参数,根据我在 documentation 中的理解应该是一个输入两个参数并返回将从副本中排除的文件名列表的函数。第一个输入是当前目录的名称,因为 shutil
递归地遍历树,第二个是其内容列表。
这就是为什么我输入一个 lambda 试图返回列表中那些文件元素的原因。
但这行不通。它正在复制一切。
我在哪里感到困惑?
我想做的是,如果我有
source\
subdir1\
file11.txt
file12.txt
subdir2\
file21.txt
我要获取
target\
subdir1\
subdir2\
顺便说一句,我想我可以使用 walk
或 glob
自己编写副本,但我认为 shutil
会是使用简单。
最佳答案
这有什么改变吗?
shutil.copytree(source,target,symlinks=False,ignore=ignore_files);
def ignore_files(folder, files):
return [f for f in files if not os.path.isdir(os.path.join(folder, f))]
关于python - 在 Python 中使用 shutil 仅复制目录树中的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35117874/