Вот три способа разархивировать файлы в Python:
Содержание
Способ 1: использование метода Extractall()
Чтобы разархивировать файл в Python, вы можете использовать метод ZipFile.extractall(). Метод extractall() принимает в качестве аргументов path, members и pwd и извлекает все содержимое.
Синтаксис
|
1 |
ZipFile.extractall(path=None, members=None, pwd=None) |
Параметры
- path: место, куда необходимо распаковать zip-файл; если не указано, он извлечет содержимое в текущий каталог.
- members: список файлов, которые будут удалены. Если этот аргумент не указан, будут извлечены все файлы в zip-архиве.
- pwd: если zip-файл зашифрован, передайте пароль в этом аргументе. Значение по умолчанию — None.
Пример 1: как использовать функцию extractall()
|
1 2 3 4 5 |
from zipfile import ZipFile with ZipFile('Mail3.zip', 'r') as zipObj: # Extract all the contents of zip file in current directory zipObj.extractall() |
Если вы запустите приведенный выше код, он извлечет файлы из вашего программного файла app.py в тот же каталог.
Пример 2: извлечение всех файлов из zip-файла в другой каталог
|
1 2 3 4 5 6 |
from zipfile import ZipFile with ZipFile('Mail3.zip', 'r') as zipObj: # Extract all the contents of zip file in different directory zipObj.extractall('temp') print('File is unzipped in temp folder') |
Выход
|
1 |
File is unzipped in temp folder |
Способ 2: применение метода Extract()
Метод Extract() используется для извлечения элемента из zip-архива в текущий рабочий каталог. Файл также можно извлечь в другое место, минуя параметр пути.
Синтаксис
|
1 |
ZipFile.extract(member, path=None, pwd=None) |
Параметры
- members: определяет имена файлов, которые необходимо извлечь.
- file_path: место, куда необходимо извлечь файл архива. Если file_path имеет значение None, то содержимое zip-файла будет извлечено в текущий рабочий каталог.
- pwd: это пароль, используемый для зашифрованных файлов. По умолчанию pwd — None.
Пример
|
1 2 3 4 5 6 7 8 9 |
from zipfile import ZipFile with ZipFile('Mail3.zip', 'r') as zipObject: listOfFileNames = zipObject.namelist() for fileName in listOfFileNames: if fileName.endswith('.py'): # Extract a single file from zip zipObject.extract(fileName, 'temp_py') print('All the python files are extracted') |
Способ 3: с помощью модуля Python Shutil
Вы можете использовать метод Shutil.unpack_archive() для распаковки файла в Python.
Синтаксис
|
1 |
shutil.unpack_archive(filename , extract_dir) |
Параметры
- filename: это может быть любой объект, подобный пути (например, экземпляры pathlib.Path). Он представляет полный путь к файлу.
- extract_dir (необязательный): это может быть любой объект, подобный пути (например, экземпляры pathlib.Path), который представляет путь к целевому каталогу, в котором распакован файл.
Пример
|
1 2 3 4 5 6 7 8 9 10 11 |
# importing shutil module import shutil # Path of the file filename = "/home/User/Desktop/filename.zip" # Target directory extract_dir = "/home/username/Documents" # Unzip the file shutil.unpack_archive(filename, extract_dir) |
