shutil.copyfile создает файлы, которые нельзя открыть? (Python) * решено * - PullRequest
0 голосов
/ 21 октября 2019

Я работаю над программой, которая работает с файлами и каталогами, и моя задача состоит в том, чтобы взять некоторые файлы из списка и сделать их дубликаты с расширением «.copy», добавленным в конце. Однако, когда я захожу в Finder, чтобы открыть эти скопированные файлы, я получаю сообщение, что это «неподдерживаемые типы файлов». Может кто-нибудь объяснить, что я делаю не так?

Кстати, я работаю над MacBook Pro.

def copy_files (c_list = [Path]):
     d_list = []
     for element in c_list:
     shutil.copyfile (element.name, element.name + '.copy')
     return d_list

1 Ответ

1 голос
/ 21 октября 2019

Проблема может заключаться в том, что некоторые исследователи файлов обрабатывают файлы самостоятельно и не следуют собственным соглашениям операционной системы, а именно: регистрируют средства открытия файлов по расширению вместо mimetype. Поскольку вы добавили .copy в конец имен файлов, возможно, у вашего экспортера возникла проблема. Попробуйте удалить расширение .copy и открыть его снова.

Если это по-прежнему не работает, при условии, что вы используете собственный механизм экспорта файлов Mac OS, который знает, как правильно обрабатывать файлы для своей ОС, пожалуйста, обратитесь кэто предупреждение из документации Python3:

Предупреждение Даже функции копирования файлов более высокого уровня (shutil.copy(), shutil.copy2()) не могут копировать все метаданные файла. На платформах POSIX это означает, что владелец файла и группа будут потеряны, а также ACL. В Mac OS ветвь ресурса и другие метаданные не используются. Это означает, что ресурсы будут потеряны, а тип файла и коды создателя будут неправильными. В Windows владельцы файлов, списки ACL и альтернативные потоки данных не копируются.

Надеюсьэто помогает! :)

...