# Created on savesnippets.com ยท https://savesnippets.com/inoQSeoBikNFot import requests from pathlib import Path from tqdm import tqdm def download(url: str, dest: str | Path, chunk: int = 1 << 16) -> Path: dest = Path(dest) with requests.get(url, stream=True, timeout=30) as r: r.raise_for_status() total = int(r.headers.get("content-length") or 0) if dest.exists() and dest.stat().st_size == total: return dest # already complete with dest.open("wb") as f, tqdm( total=total, unit="B", unit_scale=True, desc=dest.name ) as bar: for piece in r.iter_content(chunk_size=chunk): f.write(piece) bar.update(len(piece)) return dest download("https://example.com/big-file.zip", "downloads/big-file.zip")