在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()手工制作一些代码

如果这是你需要的,告诉我,我会写一个例子。

相关内容

最新更新