Заметки ITшника обо всём

Unzip без unzip

Есть сервер без доступа в интернет, с древней ОС и мёртвыми репозиториями. Нужно распаковать ZIP-архив, но unzip отсутствует, а установить его неоткуда.

Решаем вопрос штатным модулем Python zipfile, без дополнительных зависимостей.

Python 2.7:

python - <<'EOF'
import zipfile
import os

archive = 'archive.zip'
target_dir = 'archive'

if not os.path.exists(target_dir):
os.makedirs(target_dir)

with zipfile.ZipFile(archive, 'r') as z:
for name in z.namelist():
z.extract(name, target_dir)
EOF

Python 3:

python3 -m zipfile -e archive.zip archive

Для Python 3 достаточно встроенного интерфейса командной строки модуля zipfile. Никаких дополнительных пакетов.

В обоих случаях архив распаковывается в каталог archive. Для Python 3 каталог назначения должен существовать заранее, поэтому при необходимости сначала выполните mkdir -p archive.

Отправить
Поделиться
Твитнуть