0

より古いフォルダーを含むメインフォルダー netbooks_nbo があります。最後の 7 つのフォルダー (最終更新日まで) を取得し、それらを C:\ ドライブのどこかにコピーしたいと考えています。これが私の現在のコードです:

コードは次のようになります。

import os
import distutils.core

def get_immediate_subdirectories(dir):
    return [os.path.join(dir, name) for name in os.listdir(dir)
            if os.path.isdir(os.path.join(dir, name))]

def main():
    path = "\\\\Network_Drive\\netbooks_nbo"
    all_dirs = get_immediate_subdirectories(path)
    all_dirs.sort(key=lambda x: os.path.getmtime(x))
    all_dirs = all_dirs[len(all_dirs)-7: len(all_dirs)]

    for i in all_dirs:
        for n in get_immediate_subdirectories(i):
            distutils.dir_util.copy_tree(n, "C:\\AllFiles")
            print "copied"+ n

問題は、dir_util.copy_tree が実際のディレクトリではなく、すべてのファイルをコピーすることです。ディレクトリ構造を保持したい。使用してみ shutil.copytree(src, dst)ましたが、 for ループの 1 回の反復後に C:\AllFiles が既に存在するため、エラーが返されます。そしてshutil.copy(src,dst)、いくつかの奇妙な許可エラーのために機能しません。

何か案は?

4

1 に答える 1