В настоящее время я пишу скрипт на Python 3.7 для Windows, чтобы рекурсивно копировать файлы / каталоги из A в B и после копирования удалить все скопированные файлы в A.
Моя функция копирования:
def copytree(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.exists(d):
logging.info("%s already exists" %item)
continue
if os.path.isdir(s):
try:
shutil.copytree(s, d, symlinks, ignore=log_directory_copy, copy_function=copy2_verbose)
logging.info("Dir %s copied succesfully to %s " %(item, dst))
except OSError as e:
logging.error("Error while copying %s. %s" %(item,e))
error_occured = True
else:
copy2_verbose(s,d)
Мои copy2_verbose и log_directory_copy для регистрации файла для копирования и изменения каталога:
def copy2_verbose(src, dst):
global error_occured
if os.path.exists(dst):
logging.info("%s already exists" %os.path.basename(src))
return
try:
logging.debug('Copy {0}'.format(os.path.basename(src)))
shutil.copy2(src,dst)
except OSError as e:
logging.error('Error while copying %s . %s' %(os.path.basename(src),e)) # Here I get the ERRORNO2
error_occured = True
def log_directory_copy(path, names):
logging.info('Change to %s' % path)
return []
При запуске следующего фрагмента кода я всегда получаюERRORNO2 только для некоторых определенных файлов в подкаталоге. Другие файлы в том же каталоге были скопированы без проблем. Всегда эти 7 файлов. Копирование других файлов из других каталогов и файлов из того же каталога работает отлично.
#more code
for entry in os.scandir(source_path):
if entry.is_dir() and entry.name == rev_version:
make_and_change_dirs(backUpSourceRevisionPath, sourceRevisionPath)
copytree(sourceRevisionPath,backUpSourceRevisionPath)
removeFileOrDir(sourceRevisionPath)
break
Например, я получил следующую ошибку:
[Errno 2] Нет такого файла или каталога: '\\ путь \ Имя пользователя \ SW \ VideoLAN \ VLCMediaPlayer_2.2.4.0_C-x64_DE_ALL \ Source \ 01 \ Packages \ Prog64 \ VideoLAN \ VLC \ Lua \ HTTP \ CSS \ щ-воздушность \ Images \ щ-bg_highlight-soft_75_ffe45c_1x100.png '
6 из 7 файлов, которые я не могу скопировать, находятся в этом каталоге, но в этом каталоге есть и другие файлы, которые я могу скопировать без проблем.
Во время отладки я проверил источник ипеременная назначения для файлов, и это правильно, тем не менее я получаю ошибку.
Я очень смущен. Когда я хочу удалить эти файлы, такой ошибки нет, и она отлично работает. Ссылка на файл, конечно, та же самая.