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:
zipfile
for working with Zip files andpathlib
for working with file paths.Create a
Path
object to represent the current directory. You can modify this to specify a different directory if needed.Use the
glob
method of thePath
object to iterate over all the Zip files (*.zip
) in the current directory.For each Zip file, open it using
zipfile.ZipFile
in read mode ('r'
).Use the
extractall
method 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)