python - 在维护目录结构时无法通过扩展名选择文件和复制

时间:2012-12-12 07:00:17

标签: python

我有一个超过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,而不是将它们保存在子文件夹中。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分: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))