Skip to content

Instantly share code, notes, and snippets.

@jorgeas80
Created April 15, 2021 21:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jorgeas80/feb1489e1858c64215613e1d1dabf21d to your computer and use it in GitHub Desktop.
Save jorgeas80/feb1489e1858c64215613e1d1dabf21d to your computer and use it in GitHub Desktop.
Unzips all files in a dir, extracting the files one by one, with a rusty status report
import os, zipfile
import sys
dir_name = sys.argv[1] if len(sys.argv) > 1 else None
extension = sys.argv[2] if len(sys.argv) > 2 else ".zip"
if not dir_name:
print("No dir name")
sys.exit(1)
os.chdir(dir_name) # change directory from working dir to dir with files
for item in os.listdir(dir_name): # loop through items in dir
if item.endswith(extension): # check for ".zip" extension
file_name = os.path.abspath(item) # get full path of files
zip_ref = zipfile.ZipFile(file_name) # create zipfile object
uncompress_size = sum((file.file_size for file in zip_ref.infolist()))
extracted_size = 0
print(f"Processing file {file_name}...")
for compressed_file in zip_ref.infolist():
extracted_size += compressed_file.file_size
print(f"Extracting {compressed_file}: {extracted_size * 100/uncompress_size}%\r")
zip_ref.extract(compressed_file)
#zip_ref.extractall(dir_name) # extract file to dir
zip_ref.close() # close file
os.remove(file_name) # delete zipped file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment