Skip to content Skip to sidebar Skip to footer

Use Subprocess Python Library To Unzip A File Using 7zip

I would like to unzip a file with Python using 7zip executable. In Perl this is pretty straightforward: $zip_exe_path = 'C:\\Dropbox\\7-zip\\7z.exe'; $logfile_path = 'C:\\Temp\\zip

Solution 1:

Why not use python zip:

import zipfile

with zipfile.ZipFile(logfile_path, 'r') as z:
    z.extractall()

Or using subprocess:

subprocess.call(['zip_exe_path','x','logfile_path','-y'], shell=True)

Solution 2:

This work like a charm for me :)

first, install py7zr library:

pip install py7zr

for extracting all files in .7z:

from py7zr import py7zr

with py7zr.SevenZipFile('7z file_location', mode='r') as z:
    z.extractall()

for extracting a single file:

from py7zr import py7zr

with py7zr.SevenZipFile('7z file_location', mode='r') as z:
    z.extract(targets=['rootdir/filename'])

Solution 3:

The error is that you are passing the strings 'zip_exe_path' and 'logfile_path' instead of the values of those variables.

import subprocess
zip_exe_path = "C:\\Dropbox\\7-zip\\7z.exe"
logfile_path = "C:\\Temp\\zipped_file.7z"
subprocess.call([zip_exe_path, 'x', logfile_path, '-y'])

You can of course pass the command as a single string with shell=True but the shell does not add any value and incurs some overhead (and risk!)


Solution 4:

Figured it out:

import subprocess

subprocess.Popen(zip_exe+' x '+file+' -o'+output_loc,stdout=subprocess.PIPE)

Post a Comment for "Use Subprocess Python Library To Unzip A File Using 7zip"