[python]Download file and use tqdm for progress bar.

Download file with requests

To download the file from web with requests module is the easiest, you just need to turn on stream while using get method. Then download the file chunk by chunk by using the iter_content method.

Here is the example code on how to download file with requests.

import requests
from pathlib import Path
import os


url = "https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg"
filename = os.path.basename(url)
dl_path = os.path.join(Path.home(), "tmp")
os.makedirs(dl_path, exist_ok=True)
abs_path = os.path.join(dl_path, filename)
with requests.get(url, stream=True) as r, open(abs_path, "wb") as f:
    for chunk in r.iter_content(chunk_size=1024):
        f.write(chunk)

Download file with progress bar

If you are downloading a huge file such as 500MB or 1GB or more, you may want to include a progress bar so that you are updated on the file download progress instead of waiting on a blank screen while running the script. You can write your own logic, but an easier way is to install tqdm which is easy to use, tqdm helps you track the progress of your file download.

You can find my script with documentation here.

This is how the script will be like:

Downloading file with progress bar with tqdm.
To add the filename to the progress bar, include desc in tqdm

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s