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)