2016-05-04 3 views
1

У меня есть скрипт python, который сжимает определенные файлы в zip-файл. Однако я заметил, что в этом zip-файле создается файл «.DS_Store». Есть ли способ удалить это из zip-файла или избежать его создания в первую очередь в моем скрипте python. Из того, что я нашел в Интернете, я думаю, что на машине с Windows этот скрытый файл отображается как файл «macosx».Как исключить путь «.DS_Store» при сжатии файлов в Python

Я проверил zip-файл с скрытым файлом «.DS_Store» и без него (я вручную удалил его). Когда я удаляю его, zip-файл может быть обработан правильно, и когда я его оставлю, возникают ошибки.

Это, как я создаю файл почтового индекса в моем питон скрипт:

#Create zip file of all necessary files 
    zipf = zipfile.ZipFile(new_path+zip_file_name, 'w', zipfile.ZIP_DEFLATED) 
    create_zip(new_path,zipf) 
    zipf.close() 

Любые советы, как подойти удалив этот скрытый файл будет оценена.

+0

Вы используете сценарий на Mac? https://en.wikipedia.org/wiki/.DS_Store –

+0

@TimPietzcker Да, но zip обрабатывается в отдельной системе, которая выдает ошибки, когда обнаруживает «.DS_Store» по какой-то причине – Catherine

+0

Какие ошибки это делает бросить? Windows должна просто восстановить файл. – cdarke

ответ

3

Ваш код использует функцию create_zip, но вы не поделились кодом этой функции. Предположительно, он просматривает содержимое каталога и вызывает метод .write экземпляра ZipFile для записи каждого файла в архив. Если это так, просто добавьте некоторую логику в эту функцию, чтобы исключить любые файлы, называемые .DS_Store.

def create_zip(path, zipfile): 
    files = os.listdir(path) 
    for file in files: 
     if file != '.DS_Store': 
      zipfile.write(file) 
+4

Или любой скрытый файл: 'if not file.startswith ('.'):' – jonrsharpe

Смежные вопросы