0

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

原始文件夹结构:

顶部文件夹/

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

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

结果文件夹结构:

顶部文件夹/

    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 停止,然后我有自己的代码来转换批处理文件夹中的其余文件夹结构?

这是我的代码:

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)
4

1 回答 1

0

您应该能够使用ignore参数 ofcopytree来帮助解决这个问题。基本上,您可以使用它来设置一个glob模式,该模式包括除了您想要复制的目录/文件之外的所有内容,然后它应该匹配所有其他的,从而忽略它们。您可以创建自定义ignore函数以按照您的意愿行事。

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

于 2014-05-27T01:30:31.813 回答