python中的非递归shutil.copytree

时间:2014-05-26 23:41:28

标签: python shutil copytree

我是使用python的新手,我正在尝试为某些文件创建一个新的文件夹结构。我使用os,shutil和copytree来执行以下操作:

原始文件夹结构:

top_folder /

    batch1/
        1.tif
        1.xml
        2.tif
        2.xml
        hello.tif
        hello.xml

    batch2/
        purple.tif
        purple.xml
        red.tif
        red.xml

导致文件夹结构:

top_folder /

    batch1/
        1/
            1.tif
            1.xml
        2/
            2.tif
            2.xml
        hello/
            hello.tif
            hello.xml

    batch2/
        purple/
            purple.tif
            purple.xml
        red/
            red.tif
            red.xml

我的问题是:我如何使用copytree并让它只复制前两个级别的文件夹,然后copytree停止然后我有自己的代码来转换批处理文件夹中的其余文件夹结构?< / p>

这是我的代码:

import os, shutil, errno
def copy(src, dest):
    try:
        shutil.copytree(src, dest)
    except OSError as e:
        if e.errno == errno.ENOTDIR:
            #code here to transform folders
                else:
                    break
            else:
                print('Directory not copied. Error: %s' % e)

1 个答案:

答案 0 :(得分:0)

您应该可以使用ignore的{​​{1}}参数来帮助解决此问题。基本上你可以使用它来设置copytree模式,其中包含你想要复制的目录/文件以外的所有模式,然后它应该匹配所有其他模式,从而忽略它们。您可以创建自定义glob功能,以便按照您的意愿行事。

在此处查看更多详细信息,包括示例代码:https://docs.python.org/2/library/shutil.html#copytree-example