Как разархивировать архив без перезаписи существующих файлов?
Функция 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
?