2 This is a failed attempt. See
3 https://github.com/halfak/Mediawiki-Utilities/issues/13 for more details.
12 class SevenZFileError(py7zlib.ArchiveError):
15 class SevenZFile(object):
17 def is_7zfile(cls, filepath):
18 """ Determine if filepath points to a valid 7z archive. """
22 fp = open(filepath, 'rb')
23 archive = py7zlib.Archive7z(fp)
24 n = len(archive.getnames())
30 def __init__(self, filepath):
31 fp = open(filepath, 'rb')
32 self.filepath = filepath
33 self.archive = py7zlib.Archive7z(fp)
35 def __contains__(self, name):
36 return name in self.archive.getnames()
38 def bytestream(self, name):
39 """ Iterate stream of bytes from an archive member. """
41 raise SevenZFileError('member %s not found in %s' %
42 (name, self.filepath))
44 member = self.archive.getmember(name)
45 for byte in member.read():
49 def readlines(self, name):
50 """ Iterate lines from an archive member. """
51 linesep = os.linesep[-1]
53 for ch in self.bytestream(name):
65 with open("/mnt/data/xmldatadumps/public/simplewiki/20141122/simplewiki-20141122-pages-meta-history.xml.7z", "rb") as f:
66 a = py7zlib.Archive7z(f)
68 print(a.getmember(a.getnames()[0]).read())