comparison files.py @ 98:62a96d51bf94

Fixed ZipArchive.extract with relative paths on Windows
author Oleg Oshmyan <chortos@inbox.lv>
date Wed, 02 Mar 2011 19:52:03 +0000
parents c62c9bfd614a
children cdd0f970d112
comparison
equal deleted inserted replaced
97:bbf9c434fa57 98:62a96d51bf94
106 106
107 def __init__(self, path): 107 def __init__(self, path):
108 self.file = zipfile.ZipFile(path) 108 self.file = zipfile.ZipFile(path)
109 109
110 def extract(self, name, target): 110 def extract(self, name, target):
111 member = self.file.getinfo(name)
112 # FIXME: 2.5 lacks ZipFile.extract
111 if os.path.isabs(target): 113 if os.path.isabs(target):
112 # To my knowledge, this is as portable as it gets 114 # To my knowledge, this is as portable as it gets
113 path = os.path.join(os.path.splitdrive(target)[0], os.path.sep) 115 path = os.path.join(os.path.splitdrive(target)[0], os.path.sep)
114 else: 116 member.filename = os.path.relpath(target, path)
115 path = None 117 self.file.extract(member, path)
116 118 else:
117 member = self.file.getinfo(name) 119 member.filename = os.path.relpath(target)
118 member.filename = os.path.relpath(target, path) 120 self.file.extract(member)
119 # FIXME: 2.5 lacks ZipFile.extract
120 self.file.extract(member, path)
121 121
122 def open(self, name): 122 def open(self, name):
123 return self.file.open(name, 'rU') 123 return self.file.open(name, 'rU')
124 124
125 def exists(self, queried_name): 125 def exists(self, queried_name):