1

150,000 を超えるファイルを含むハード ドライブがあります。ディレクトリ構造を維持しながら、拡張子に基づいてファイルを識別し、それらを新しいディレクトリにコピーできる必要があります。

私はこれを試しました:

    srcDir ="c:/folder1/d"
    dest ="c:/folder1/G"
    os.makedirs(dest)
    for root, dirs, files in os.walk(srcDir):
        for file in files:
            if file[-4:].lower() == '.txt':
            shutil.copy(os.path.join(root, file), os.path.join(dest, file))

これにより、すべての .txt ファイルがサブフォルダーに保持されるのではなく、c:/arcgis/G に保存されます。どんな助けでも大歓迎です。

4

1 に答える 1

1

root散歩中はいつも同じではありません。サブディレクトリに入ると、そのサブディレクトリが含まれます。新しい宛先に対して変更されたパスを尊重しないため、階層は維持されません。

ルートのソースディレクトリを宛先ディレクトリに置き換えるだけです。

for root, dirs, files in os.walk(srcDir):
    dRoot = root.replace(srcDir, dest)
    os.makedirs(dRoot)
    for file in files:
        if file[-4:].lower() == '.txt':
            shutil.copy(os.path.join(root, file), os.path.join(dRoot, file))
于 2012-12-12T07:08:42.223 に答える