Created
April 15, 2021 21:21
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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