import random import time import zipfile def test_writestr(): #if compress == zipfile.ZIP_LZMA: return with zipfile.ZipFile('testzipw.zip', 'w', compress) as zipfp: for i in range(10): zipfp.writestr('lines%i' % i, lines) def test_writefile(): #if compress == zipfile.ZIP_LZMA: return with zipfile.ZipFile('testzipw.zip', 'w', compress) as zipfp: for i in range(10): zipfp.write('testzip.txt', 'lines%i' % i) def test_read(): with zipfile.ZipFile('testzip.zip', 'r') as zipfp: for zinfo in zipfp.infolist(): with zipfp.open(zinfo, 'r') as fp: fp.read() def test_read_1(): with zipfile.ZipFile('testzip.zip', 'r') as zipfp: for zinfo in zipfp.infolist(): with zipfp.open(zinfo, 'r') as fp: while fp.read(1): pass def test_read_10(): with zipfile.ZipFile('testzip.zip', 'r') as zipfp: for zinfo in zipfp.infolist(): with zipfp.open(zinfo, 'r') as fp: while fp.read(10): pass def test_readline(): with zipfile.ZipFile('testzip.zip', 'r') as zipfp: for zinfo in zipfp.infolist(): with zipfp.open(zinfo, 'r') as fp: while fp.readline(): pass def test_universal_readline(): with zipfile.ZipFile('testzip.zip', 'r') as zipfp: for zinfo in zipfp.infolist(): with zipfp.open(zinfo, 'rU') as fp: while fp.readline(): pass def test_iterlines(): with zipfile.ZipFile('testzip.zip', 'r') as zipfp: for zinfo in zipfp.infolist(): with zipfp.open(zinfo, 'r') as fp: for line in fp: pass def test_universal_iterlines(): with zipfile.ZipFile('testzip.zip', 'r') as zipfp: for zinfo in zipfp.infolist(): with zipfp.open(zinfo, 'rU') as fp: for line in fp: pass def test_readlines(): with zipfile.ZipFile('testzip.zip', 'r') as zipfp: for zinfo in zipfp.infolist(): with zipfp.open(zinfo, 'r') as fp: fp.readlines() def test_universal_readlines(): with zipfile.ZipFile('testzip.zip', 'r') as zipfp: for zinfo in zipfp.infolist(): with zipfp.open(zinfo, 'rU') as fp: fp.readlines() lines = b'\n'.join([bytes('Zipfile test line %d. random float: %f.\r\n' % (i, random.random()), 'ascii') for i in range(1000)]) with open('testzip.txt', 'wb') as f: f.write(lines) for compress in (zipfile.ZIP_STORED, zipfile.ZIP_DEFLATED, zipfile.ZIP_BZIP2, zipfile.ZIP_LZMA): with zipfile.ZipFile('testzip.zip', 'w', compress) as zipfp: for i in range(10): zipfp.writestr('lines%i' % i, lines) for name in sorted(dir()): if name.startswith('test_'): func = globals()[name] repeats = 1 t = 0 while True: start = time.time() for i in range(repeats): func() t = time.time() - start if t >= 1: break repeats *= 3 print('%f %s [%s]' % (t/repeats, name, zipfile.compressor_names[compress]))