Используйте модуль zipfile для чтения zip-файла и extract(name, dest)
для извлечения каждого файла. Например:
import sys
import zipfile
def unzip(path, root='/'):
zh = zipfile.ZipFile(path, 'r')
for name in zh.namelist():
zh.extract(name, root)
zh.close()
unzip(sys.argv[1])
Если файл в zip-файле имеет путь ./usr/bin/script
, он будет извлечен в /usr/bin/script
.
Использование:
% python unzip.py myfiles.zip
Обновление : Для обработки файлов tar используйте модуль tarfile . Это определяет тип сжатия, используя расширение файла (gzip, bzip2):
import os
import sys
import tarfile
def untar(path, root='/'):
mode = 'r'
_, ext = os.path.splitext(path)
if ext in ('.gz', '.bz2'):
mode += ':' + ext[1:]
th = tarfile.open(path, mode)
for info in th.getmembers():
th.extract(info, root)
th.close()
untar(sys.argv[1])
Обновлено Если вы не можете использовать модули zipfile или tarfile, вы можете вызвать соответствующие системные команды, чтобы получить те же результаты:
import os
import subprocess
import sys
def untar(path, root):
subprocess.call(['tar', '-C', root, '-xf', path])
def unzip(path, root):
subprocess.call(['unzip', os.path.abspath(path)], cwd=root)
path = sys.argv[1]
dest = os.path.abspath(sys.argv[2])
if not os.path.exists(dest):
os.makedirs(dest)
if path.endswith('.zip'):
unzip(path, dest)
else:
untar(path, dest)