Ошибка разрешения: [Ошибка 13], когда я пытался скопировать все файлы PDF в новую папку

#python

#python

Вопрос:

Я пытаюсь скопировать все файлы PDF в пределах source_folder и его вложенных папок в новую папку, target_folder . В некоторой степени это сработало (были найдены и скопированы сотни файлов pdf target_folder ), но остановилось с ошибкой PermissionError: [Errno 13] Permission denied: "H:\all_pdf_files\xyz.pdf"

Я знал, что в Stack overflow были опубликованы некоторые похожие проблемы, я попробовал некоторые найденные решения. Но они не помогли. Кто-нибудь знает, как решить эту проблему? Спасибо!

 import os, shutil
    
source_folder = r'C:UsersABCDEFGHI'
target_folder = r'H:all_pdf_files'

for root, subdirs, files in os.walk(source_folder):
    for file in files:
        if file.endswith('.pdf'):
            shutil.copyfile(os.path.join(root, file), os.path.join(target_folder, file))
  

Комментарии:

1. Файл может быть открыт другим приложением.

2. @pavel, спасибо, что ответили на мой вопрос. Я уверен, что этот файл не был открыт. Я даже перезапустил свой ноутбук и повторно запустил скрипты :).

Ответ №1:

Я обновил свои скрипты, включив в них инструкцию try. Хотя я до сих пор не знаю, как решить проблему с ошибкой, выполнение следующих сценариев может обойти ошибку и распечатать имена файлов, которые не копируются.

 import os, shutil

source_folder = r'C:UsersABCDEFGHI'
target_folder = r'H:all_pdf_files'

for root, subdirs, files in os.walk(source_folder):
    for file in files:
        if file.endswith('.pdf'):
            try:
                shutil.copyfile(os.path.join(root, file), os.path.join(target_folder, file))
            except:
                print(os.path.join(root, file))
                print(file)