Download and Unzip a Zipped File in Python
In this example code, we will download a zipped file from the internet and then unzip it after the download is complete. We will also retrieve all the file names from the output directory by their extension.
import urllib.request import os import fnmatch import zipfile def download_and_unzip(download_url_link, dir_path, zipped_filename,destination_dir_name): print("Download starting") urllib.request.urlretrieve( download_url_link, os.path.join(dir_path, zipped_filename) ) print("Download complete") print("unzipping file starting") with zipfile.ZipFile(os.path.join(dir_path, zipped_filename), "r") as zip_file: zip_file.extractall(os.path.join(dir_path, destination_dir_name)) print("unzipping complete") def get_unzipped_filenames(path, pattern): print("Getting unzipped files") results =  for root, dirs, files in os.walk(path): for name in files: if fnmatch.fnmatch(name, pattern): results.append(name) print("File unzipping complete : ") return results if __name__ == "__main__": #link from where the file will be downloaded download_url_link = "https://www.python.org/ftp/python/3.10.1/python-3.10.1-embed-amd64.zip" #download zipped file name zipped_filename = "python.zip" #directory name where the downloaded file will be extracted last_index = zipped_filename.rfind(".") destination_dir_name = zipped_filename[0:last_index] dir_path = os.path.dirname(os.path.realpath(__file__)) extracted_to_dir = os.path.join(dir_path, destination_dir_name) #pattern to find all the .dll files filename_pattern = "*.dll" download_and_unzip(download_url_link, dir_path,zipped_filename, extracted_to_dir) extracted_filenames = get_unzipped_filenames(extracted_to_dir, filename_pattern) print("Unzipped files : ", extracted_filenames)