Unzip all zipped files in a folder to that same folder using Python 2.7.5 Unzip all zipped files in a folder to that same folder using Python 2.7.5 python python

Unzip all zipped files in a folder to that same folder using Python 2.7.5


Below is the code that worked for me:

import os, zipfiledir_name = 'C:\\SomeDirectory'extension = ".zip"os.chdir(dir_name) # change directory from working dir to dir with filesfor 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        zip_ref.extractall(dir_name) # extract file to dir        zip_ref.close() # close file        os.remove(file_name) # delete zipped file

Looking back at the code I had amended, the directory was getting confused with the directory of the script.

The following also works while not ruining the working directory. First remove the line

os.chdir(dir_name) # change directory from working dir to dir with files

Then assign file_name as

file_name = dir_name + "/" + item


I think this is shorter and worked fine for me. First import the modules required:

import zipfile, os

Then, I define the working directory:

working_directory = 'my_directory'os.chdir(working_directory)

After that you can use a combination of the os and zipfile to get where you want:

for file in os.listdir(working_directory):   # get the list of files    if zipfile.is_zipfile(file): # if it is a zipfile, extract it        with zipfile.ZipFile(file) as item: # treat the file as a zip           item.extractall()  # extract it in the working directory


The accepted answer works great!

Just to extend the idea to unzip all the files with .zip extension within all the sub-directories inside a directory the following code seems to work well:

import osimport zipfilefor path, dir_list, file_list in os.walk(dir_path):    for file_name in file_list:        if file_name.endswith(".zip"):            abs_file_path = os.path.join(path, file_name)            # The following three lines of code are only useful if             # a. the zip file is to unzipped in it's parent folder and             # b. inside the folder of the same name as the file            parent_path = os.path.split(abs_file_path)[0]            output_folder_name = os.path.splitext(abs_file_path)[0]            output_path = os.path.join(parent_path, output_folder_name)            zip_obj = zipfile.ZipFile(abs_file_path, 'r')            zip_obj.extractall(output_path)            zip_obj.close()