распаковать архив без перезаписи существующих файлов - PullRequest
0 голосов
/ 21 апреля 2020

Как разархивировать архив без перезаписи существующих файлов?

Функция ZipFile.extractall извлекает ZIP-файл, но также перезаписывает существующий файл.

Итак, я написал свою собственную функцию:

import os
import zipfile


def unzip(src_path, dst_dir, pwd=None):
    with zipfile.ZipFile(src_path) as zf:
        members = zf.namelist()
        for member in members:
            arch_info = zf.getinfo(member)
            arch_name = arch_info.filename.replace('/', os.path.sep)
            dst_path = os.path.join(dst_dir, arch_name)
            dst_path = os.path.normpath(dst_path)
            if not os.path.exists(dst_path):
                zf.extract(arch_info, dst_dir, pwd)

Но для полной реализации может потребоваться повторная реализация метода extract.

Есть ли способ разархивировать архив, игнорируя существующие файлы? Эквивалент unzip -n arch.zip?

...