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"