Python: копирование содержимого каталога c:\FLASH на все подключенные USB-накопители

Мне нужно скопировать некоторые документы, папки и файлы из одного каталога на локальном диске на все подключенные USB-накопители.

Когда папка назначения также является папкой, все работает, но если папка является корневым USB-накопителем, я всегда получаю ошибку

Ошибка: [WinError 5] Доступ запрещен: 'E:\\'

Я думаю, что проблема во втором обратном слэше.

import wmi
import os
import shutil
import pathlib
import errno

src = pathlib.WindowsPath("c:/FLASH")

def clone(src, dst):
    try:
        shutil.copytree(src, dst)
    except OSError as e:
        if e.errno == errno.ENOTDIR:
            shutil.copy(src, dst)
        elif e.errno == errno.EACCES:
            print('Error: %s' % e)
    else:
        print('Error: %s' % e)


c = wmi.WMI()
for drive in c.Win32_LogicalDisk():
    print(drive.Caption, drive.Description)
    if drive.DriveType == 2:
        dst = pathlib.PureWindowsPath(drive.Caption, '\\')
        clone(src, dst)

1 ответ

Я случайно нашел этот вопрос. Возможное решение:

      def clone(src, dst, symlinks=False, ignore=None):
for item in os.listdir(src):
    s = os.path.join(src, item)
    d = os.path.join(dst, item)
    if os.path.isdir(s):
        shutil.copytree(s, d, symlinks, ignore)
    else:
        shutil.copy2(s, d)

c = wmi.WMI()
for drive in c.Win32_LogicalDisk():
 print(drive.Caption, drive.Description)
 if drive.DriveType == 2:
    dst = pathlib.PureWindowsPath(drive.Caption, '\\')
    clone(src, dst)
Другие вопросы по тегам