python - 在 python 中,如何在没有文件的情况下制作文件夹树的精确副本?
问题描述
我需要制作一个包含所有子文件夹的文件夹的副本,但是在没有目录附带的任何文件的情况下执行此操作。
在 Python 中,我使用该os.walk
函数在目录中自上而下处理大量子文件夹中的大量图像。我想制作这个文件夹树的精确副本(os.walk 函数通过)并将它放在我指定的不同目录中。这是为了允许我将输出图像保存在它们来自的文件夹的等效副本中。
我试过了:
from distutils.dir_util import copy_tree
copy_tree("/a/b/c", "/x/y/z")
但不知道如何将其编辑为我想要的。如何使用 python 命令将空文件夹树复制到我选择的目录?
我应该使用该shutil.copytree
命令还是应该在 for 循环中放置一些东西来处理图像或其他东西?
解决方案
shutil.copytree
如果你想,你可以使用:
它有一个ignore
参数,允许您忽略被复制的项目(在您的情况下忽略所有非目录)
import os
import shutil
def cptree(src, dst):
def keep_only_dirs(path, files):
to_ignore = [
fname for fname in files
if not os.path.isdir(os.path.join(path, fname))
]
return to_ignore
# This works for python3 (<3.8), BUT the target directory MUST not exist
shutil.copytree(src, dst, ignore=keep_only_dirs)
# For python 3.8 you can use following code (Here the target directory can
# already exist and only new directories will be added
# shutil.copytree(src, dst, ignore=keep_only_dirs, dirs_exist_ok=True)
或者,如果您没有 python3.8 并且您希望能够使代码与现有目标目录一起使用,您可以使用手工制作一些代码os.walk()
如果这是你需要的告诉我,我会写一个例子。
推荐阅读
- c++ - 应该使用什么类型的 C++ 类型转换来将指向结构的指针转换为它的第一个成员?
- android - 登录应用程序 - 仅读取我的数据库中的最后一个条目
- python - 解析大型 XML 文件时出现内存错误
- c++ - 无法将大括号括起来的初始值设定项列表转换为映射
- vue.js - 单击标题打开时,我无法删除 v-expansion-panels 上的白色边框。边框只在动画中
- python - 按日期元素过滤元组列表并返回元组
- python - 饼图大小、标签、距离
- javascript - 我必须单击两次才能使用 Sortable.init() 初始化排序表
- python - 如何在多个文件上使用“导入”
- regex - 删除前缀和后缀并留下中间字符串