我正在尝试使用shutil.copytree:
shutil.copytree(SOURCE_DIR, TARGET_DIR, ignore=None)此副本还包括文件夹中的文件。我只需要复制文件夹没有任何文件。该怎么做呢?
发布于 2013-03-28 00:35:55
您可以通过提供"ignore“函数来实现这一点
def ig_f(dir, files):
return [f for f in files if os.path.isfile(os.path.join(dir, f))]
shutil.copytree(SRC, DES, ignore=ig_f)基本上,当您调用copytree时,它将递归地转到每个子文件夹,并向ignore函数提供该文件夹中的文件列表,以根据模式检查这些文件是否合适。被忽略的文件将在函数的末尾以列表的形式返回,然后,copytree将只复制该列表中排除的项目(在您的示例中,包含当前文件夹中的所有文件)。
发布于 2013-03-28 01:30:49
这是一个基于os.walk()的@Oz123's solution实现
import os
def create_empty_dirtree(srcdir, dstdir, onerror=None):
srcdir = os.path.abspath(srcdir)
srcdir_prefix = len(srcdir) + len(os.path.sep)
os.makedirs(dstdir)
for root, dirs, files in os.walk(srcdir, onerror=onerror):
for dirname in dirs:
dirpath = os.path.join(dstdir, root[srcdir_prefix:], dirname)
try:
os.mkdir(dirpath)
except OSError as e:
if onerror is not None:
onerror(e)发布于 2013-03-28 00:18:01
您应该考虑使用os.walk。
Here is an example for os.walk。这样,您可以列出所有目录,然后使用os.mkdir创建它们。
https://stackoverflow.com/questions/15663695
复制相似问题