पूरी तरह से परीक्षण नहीं है, लेकिन यह ठीक किया जाना चाहिए:
import os
from zipfile import ZipFile, ZipInfo
class ZipCompat(ZipFile):
def __init__(self, *args, **kwargs):
ZipFile.__init__(self, *args, **kwargs)
def extract(self, member, path=None, pwd=None):
if not isinstance(member, ZipInfo):
member = self.getinfo(member)
if path is None:
path = os.getcwd()
return self._extract_member(member, path)
def extractall(self, path=None, members=None, pwd=None):
if members is None:
members = self.namelist()
for zipinfo in members:
self.extract(zipinfo, path)
def _extract_member(self, member, targetpath):
if (targetpath[-1:] in (os.path.sep, os.path.altsep)
and len(os.path.splitdrive(targetpath)[1]) > 1):
targetpath = targetpath[:-1]
if member.filename[0] == '/':
targetpath = os.path.join(targetpath, member.filename[1:])
else:
targetpath = os.path.join(targetpath, member.filename)
targetpath = os.path.normpath(targetpath)
upperdirs = os.path.dirname(targetpath)
if upperdirs and not os.path.exists(upperdirs):
os.makedirs(upperdirs)
if member.filename[-1] == '/':
if not os.path.isdir(targetpath):
os.mkdir(targetpath)
return targetpath
target = file(targetpath, "wb")
try:
target.write(self.read(member.filename))
finally:
target.close()
return targetpath
आप प्रणाली समारोह निष्पादित "' '" बैकटिक ऑपरेटर या किसी अन्य तरीके का उपयोग करें और अपने फ़ाइल अनज़िप – user973254
क्या आप के साथ क्या करना चाहते हो सकता है प्रकट हो सकते हैं लेना चाहिए एक बैकटिक? ऊ – naeg
आप इस सवाल का पाया, लेकिन अजगर के एक नए संस्करण का उपयोग कर रहे हैं, तो ऐसा करते हैं: zfile = zipfile.ZipFile (file_to_extract) zfile.extractall (target_dir) – Fabian