Python Zipfile. Extract() Doesn't Extract All Files

Python Zipfile. Extract() Doesn't Extract All Files

I'm trying to extract zipped folder using code found here.

def unzip(source_filename, dest_dir):
with zipfile.ZipFile(source_filename) as zf:

    for member in zf.infolist():
        words = member.filename.split('/')
        path = dest_dir
        for word in words[:-1]:
            drive, word = os.path.splitdrive(word)
            head, word = os.path.split(word)
            if word in (os.curdir, os.pardir, ''): continue
            path = os.path.join(path, word)
        zf.extract(member, path)

But when trying to extract, for example, wordpress.zip with directory structure
wordpress/
-wp-content/
---somefile.php
-wp-config.php
-index.php
I only get the files in folder below root folder or wordpress/ in this case. So i get wordpress/wp-content/somefile.php but not the files in the wordpress/ folder itself.

2 Answers

The first place to look is the documentation:

ZipFile.extractall([path[, members[, pwd]]])

Applying that to your situation, I'd try:

def unzip(source_filename, dest_dir):
    with zipfile.ZipFile(source_filename) as zf:
        zf.extractall(dest_dir)
1

unzip, defined below, is what you want.

def unzip(source_filename, dest_dir):
    with zipfile.ZipFile(source_filename) as zf:
        zf.extractall(dest_dir)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Alexander Ross
Author

Alexander Ross

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.