a. 使用物体类别创建班级的实例:
class ZipExtractor(object): # Create class that can only extract zip files
def __init__(self, path): # Initial part
import zipfile # Import old zipfile
self.Path = path # To make path available to all class
try: open(self.Path, rb ) # To check whether file exists
except IOError: print( File doesn t exist ) # Catch error and print it
else: # If file can be opened
with open(self.Path, rb ) as temp:
self.Header = temp.read(4) # Read first 4 bytes
if self.Header != x50x4Bx03x04 :
print( Your file is not a zip archive! )
else: self.ZipObject = zipfile.ZipFile(self.Path, r )
def __enter__(self): # On entering...
return(self) # Return object created in __init__ part
def __exit__(self, exc_type, exc_val, exc_tb): # On exiting...
self.close() # Use close method of our class
def SuperExtract(member=None, path=None):
Used to extract files from zip archive. If arg member
was not set, extract all files. If path was set, extract file(s)
to selected folder.
print( Extracting ZIP archive %s % self.Path) # Print path of zip
print( Archive has header %s % self.Header) # Print header of zip
if filename=None:
self.ZipObject.extractall(path) # Extract all if member was not set
else:
self.ZipObject.extract(mamber, path) # Else extract selected file
def close(self): # To close our file
self.ZipObject.close()
使用:
with ZipExtractor( /path/to/zip ) as zfile:
zfile.SuperExtract( file ) # Extract file to current dir
zfile.SuperExtract(None, path= /your/folder ) # Extract all to selected dir
# another way
zfile = ZipExtractor( /path/to/zip )
zfile.SuperExtract( file )
zfile.close() # Don t forget that line to clear memory
如果你得到帮助,你将看到五种方法:
__init__, __enter__, __exit__, close, SuperExtract
我希望我能帮助你。 我没有试过,因此,你可能必须加以改进。