使用 subprocess python library 使用 7zip 解压缩文件
Use subprocess python library to unzip a file using 7zip
我想使用 7zip 可执行文件解压 Python 文件。在 Perl 中,这非常简单:
$zip_exe_path = "C:\Dropbox\7-zip\7z.exe";
$logfile_path = "C:\Temp\zipped_file.7z";
system ("$zip_exe_path x $log_file_path -y");
我试过这个:
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'])
当我这样做时,我得到这个错误:
FileNotFoundError: [WinError 2] The system cannot find the file specified
感谢您的帮助!
为什么不用python zip:
import zipfile
with zipfile.ZipFile(logfile_path, 'r') as z:
z.extractall()
或使用子流程:
subprocess.call(['zip_exe_path','x','logfile_path','-y'], shell=True)
想通了:
import subprocess
subprocess.Popen(zip_exe+' x '+file+' -o'+output_loc,stdout=subprocess.PIPE)
错误是您传递的是 字符串 'zip_exe_path'
和 'logfile_path'
而不是这些变量的值。
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'])
您当然可以使用 shell=True
将命令作为单个字符串传递,但 shell 不会添加任何值并且 incurs some overhead (and risk!)
这项工作对我来说就像一个魅力:)
首先,安装py7zr库:
pip install py7zr
用于提取 .7z 中的所有文件:
from py7zr import py7zr
with py7zr.SevenZipFile('7z file_location', mode='r') as z:
z.extractall()
用于提取单个文件:
from py7zr import py7zr
with py7zr.SevenZipFile('7z file_location', mode='r') as z:
z.extract(targets=['rootdir/filename'])
我想使用 7zip 可执行文件解压 Python 文件。在 Perl 中,这非常简单:
$zip_exe_path = "C:\Dropbox\7-zip\7z.exe";
$logfile_path = "C:\Temp\zipped_file.7z";
system ("$zip_exe_path x $log_file_path -y");
我试过这个:
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'])
当我这样做时,我得到这个错误:
FileNotFoundError: [WinError 2] The system cannot find the file specified
感谢您的帮助!
为什么不用python zip:
import zipfile
with zipfile.ZipFile(logfile_path, 'r') as z:
z.extractall()
或使用子流程:
subprocess.call(['zip_exe_path','x','logfile_path','-y'], shell=True)
想通了:
import subprocess
subprocess.Popen(zip_exe+' x '+file+' -o'+output_loc,stdout=subprocess.PIPE)
错误是您传递的是 字符串 'zip_exe_path'
和 'logfile_path'
而不是这些变量的值。
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'])
您当然可以使用 shell=True
将命令作为单个字符串传递,但 shell 不会添加任何值并且 incurs some overhead (and risk!)
这项工作对我来说就像一个魅力:)
首先,安装py7zr库:
pip install py7zr
用于提取 .7z 中的所有文件:
from py7zr import py7zr
with py7zr.SevenZipFile('7z file_location', mode='r') as z:
z.extractall()
用于提取单个文件:
from py7zr import py7zr
with py7zr.SevenZipFile('7z file_location', mode='r') as z:
z.extract(targets=['rootdir/filename'])