Browse Source

copy this over for use to handle rar files..

[git-p4: depot-paths = "//depot/": change = 1132]
replace/b43bf02ddeddd088c0e6b94974ca1a46562eb3db
John-Mark Gurney 17 years ago
parent
commit
dd7270bf14
1 changed files with 37 additions and 0 deletions
  1. +37
    -0
      iterrarfile.py

+ 37
- 0
iterrarfile.py View File

@@ -0,0 +1,37 @@
#!/usr/bin/env python
# Copyright 2006 John-Mark Gurney <gurney_j@resnet.uoregon.edu>

__version__ = '$Change$'
# $Id$

import tarfile
from tarfile import *

TAR_PLAIN = tarfile.TAR_PLAIN
TAR_GZIPPED = tarfile.TAR_GZIPPED
TAR_BZ2 = 'bz2'

__all__ = tarfile.__all__

class TarFileCompat(tarfile.TarFileCompat):
def __init__(self, file, mode="r", compression=TAR_PLAIN):
if compression != TAR_BZ2:
tarfile.TarFileCompat.__init__(self, file, mode, compression)
return

self.tarfile = TarFile.bz2open(file, mode)
if mode[0:1] == "r":
members = self.tarfile.getmembers()
for i in xrange(len(members)):
m = members[i]
m.filename = m.name
m.file_size = m.size
m.date_time = time.gmtime(m.mtime)[:6]

def readiter(self, name, blksize=16384):
f = self.tarfile.extractfile(self.tarfile.getmember(name))
while True:
data = f.read(blksize)
if data == '':
break
yield data

Loading…
Cancel
Save