import zipfile# Open ZIP filewith zipfile.ZipFile('archive.zip', 'r') as zf: # List contents print(zf.namelist()) # Get file info for info in zf.infolist(): print(f"{info.filename}: {info.file_size} bytes") # Read specific file with zf.open('file.txt') as f: content = f.read() # Extract all files zf.extractall('extracted') # Extract specific file zf.extract('file.txt', 'output')
import zipfile# Create new ZIP filewith zipfile.ZipFile('archive.zip', 'w', zipfile.ZIP_DEFLATED) as zf: # Add file zf.write('file.txt') # Add file with different archive name zf.write('data.txt', arcname='renamed.txt') # Add file from string zf.writestr('info.txt', 'File contents here')
import zipfilefrom pathlib import Pathdef backup_directory(directory, output_zip): """Backup all files in directory to ZIP""" with zipfile.ZipFile(output_zip, 'w', zipfile.ZIP_DEFLATED) as zf: for file in Path(directory).rglob('*'): if file.is_file(): zf.write(file, file.relative_to(directory))backup_directory('my_project', 'backup.zip')
import zipfiledef extract_with_progress(zip_path, extract_to): """Extract ZIP with progress indication""" with zipfile.ZipFile(zip_path, 'r') as zf: files = zf.namelist() total = len(files) for i, file in enumerate(files, 1): print(f"Extracting {i}/{total}: {file}") zf.extract(file, extract_to)extract_with_progress('archive.zip', 'output')