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 回答