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 を使用してフォルダーの最初の 2 レベルのみをコピーするようにするにはどうすればよいですか?

これが私のコードです:

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これを支援するために の引数を使用できるはずですcopytree。基本的に、それを使用してglob、コピーしたいディレクトリ/ファイル以外のすべてを含むパターンをセットアップすると、他のすべてと一致するため、それらを無視する必要があります。カスタマイズしたignore関数を作成して、好きなように動作させることができます。

サンプル コードを含む詳細については、https ://docs.python.org/2/library/shutil.html#copytree-example を参照してください。

于 2014-05-27T01:30:31.813 に答える