python - 在 Python 中使用 shutil 仅复制目录树中的目录

标签 python shutil

我正在尝试在 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\

顺便说一句,我想我可以使用 walkglob 自己编写副本,但我认为 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/

相关文章:

python - 向用户询问优先级列表,然后根据该列表对列表进行排序

python - Shutil.move 是否保证删除或抛出?

python-3.x - os.makedirs之后shutdownil.copy失败

python - 为什么文件的并发复制不会失败?

python - 在 Windows 上使用 Python 解决伪造的 OSError, 13 (EACCES) 的好方法是什么

python - 使用 python 点击​​ http url 获取 IOError

python - 如何将生成器表达式作为 Python 的 join 方法的输入?

python - 在换行符上拆分,但不是空格换行符

python - 将 StringIO 的内容写入文件的最佳方法是什么?

python - 在 Windows 上使用 Shutil.copyfile() 时出现 IOError