Tutorial: Extracting Zip Files
In this tutorial, we will learn how to extract all the Zip files in a directory using Python's zipfile module and the pathlib module. We'll go through the code step by step and discuss different ways to encapsulate this functionality in a function.
Code Explanation
import zipfile
from pathlib import Path
# Set the target directory
p = Path('.')
# Iterate over all Zip files in the directory
for f in p.glob('*.zip'):
# Open the Zip file
with zipfile.ZipFile(f, 'r') as archive:
# Extract all contents of the Zip file to a directory with the same name as the file
archive.extractall(path=f'./{f.stem}')
# Print a message indicating that the extraction is complete
print(f"Extracted contents from '{f.name}' to '{f.stem}' directory.")
The code performs the following steps:
Import the necessary modules:
zipfilefor working with Zip files andpathlibfor working with file paths.Create a
Pathobject to represent the current directory. You can modify this to specify a different directory if needed.Use the
globmethod of thePathobject to iterate over all the Zip files (*.zip) in the current directory.For each Zip file, open it using
zipfile.ZipFilein read mode ('r').Use the
extractallmethod of the Zip file object to extract all the contents of the Zip file to a directory with the same name as the file. Thepath=f'./{f.stem}'argument specifies the destination directory.After the extraction is complete, print a message indicating that the process is done, using
print(f"Extracted contents from '{f.name}' to '{f.stem}' directory.").
Recipe 1: Function with Directory Parameter
import zipfile
from pathlib import Path
def extract_zip_files(directory):
p = Path(directory)
for f in p.glob('*.zip'):
with zipfile.ZipFile(f, 'r') as archive:
archive.extractall(path=f'./{f.stem}')
print(f"Extracted contents from '{f.name}' to '{f.stem}' directory.")
# Usage example
extract_zip_files('.')
This recipe demonstrates creating a function extract_zip_files that accepts a directory parameter. It performs the same functionality as the previous code but allows you to specify a different directory.
Recipe 2: Function with Output Path
import zipfile
from pathlib import Path
def extract_zip_files(directory, output_path):
p = Path(directory)
for f in p.glob('*.zip'):
with zipfile.ZipFile(f, 'r') as archive:
archive.extractall(path=output_path)
print(f"Extracted contents from '{f.name}' to '{output_path}' directory.")
# Usage example
extract_zip_files('.', './extracted_files')
This recipe demonstrates creating a function extract_zip_files that accepts both a directory parameter and an output_path parameter. It allows you to specify a custom output directory where the extracted files will be stored.
Top comments (0)