Warm tip: This article is reproduced from serverfault.com, please click

windows 10-使用具有完整文件夹结构的python复制文件

(windows 10 - Copy files using python with complete folder structure)

发布于 2020-11-29 16:04:41

我将在几天之内用更好的SSD切换SSD,并且存储了很多数据,如果删除它们我可能会后悔。我唯一需要的文件类型是PDF文件,docx文件,txt文件和其他东西。因此,我编写了一个脚本来使用python定位这些文件。

# to copy all of my documents into another location.
import sys
import os
import time
import pathlib
import json


filePath=["D:\\", "C:\\Users"]
# ext=['mkv','docx','doc','pdf','mp4','zip',]
fileExt=["**\*.docx","**\*.doc","**\*.pdf"]
fileList={}
for each_drive in filePath:
    fileList[each_drive]={}
    for each_type in fileExt:
        fileList[each_drive][each_type]=list(pathlib.Path(each_drive).glob(each_type))

file1 = open('test.txt', 'w')
for each in fileList.values():
    for each2 in each.values():
        for entry in each2:
            print(entry)
            file1.writelines(str(str(entry)+ "\n"))


file1.close()

该脚本只查找文件格式与FileExt列表匹配的文件,并将这些位置写到test.txt文件中。现在,我需要在保留确切目录结构的同时传输这些文件。例如,如果有一个文件

C:\Users\<MyUser>\AppData\Local\Files\S0\1\Attachments\hpe[4].docx

该脚本应将整个目录结构复制为

<BackupDrive>:\<BackupFolderName>\C\Users\<MyUser>\AppData\Local\Files\S0\1\Attachments\hpe[4].docx

如何使用这种确切的结构进行复制。
TLDR:需要复制文件,同时保持目录结构与使用Python
PS时一样我正在使用Windows,带有Python 3.8

Questioner
CrYbAbY
Viewed
0
FloLie 2020-11-30 00:20:11

对于文件列表中的每一行,请执行以下操作:

for filePath in fileList:
    destination = .join(['<BackupDrive>:\<BackupFolderName>', filePath[2:]])
    os.makedirs(os.path.dirname(filePath), exist_ok=True)
    shutil.copy(filePath , destination)