Andrew M. Kuchling | 605ebdd | 1999-03-25 21:50:27 +0000 | [diff] [blame] | 1 | import sys, os |
| 2 | import gzip, tempfile |
| 3 | |
| 4 | filename = tempfile.mktemp() |
| 5 | |
| 6 | data1 = """ int length=DEFAULTALLOC, err = Z_OK; |
| 7 | PyObject *RetVal; |
| 8 | int flushmode = Z_FINISH; |
| 9 | unsigned long start_total_out; |
| 10 | |
| 11 | """ |
| 12 | |
| 13 | data2 = """/* zlibmodule.c -- gzip-compatible data compression */ |
| 14 | /* See http://www.cdrom.com/pub/infozip/zlib/ */ |
| 15 | /* See http://www.winimage.com/zLibDll for Windows */ |
| 16 | """ |
| 17 | |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 18 | f = gzip.GzipFile(filename, 'wb') ; f.write(data1 * 50) ; f.close() |
Andrew M. Kuchling | 605ebdd | 1999-03-25 21:50:27 +0000 | [diff] [blame] | 19 | |
Guido van Rossum | 052364b | 1999-04-07 19:00:58 +0000 | [diff] [blame] | 20 | f = gzip.GzipFile(filename, 'rb') ; d = f.read() ; f.close() |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 21 | assert d == data1*50 |
Andrew M. Kuchling | 605ebdd | 1999-03-25 21:50:27 +0000 | [diff] [blame] | 22 | |
| 23 | # Append to the previous file |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 24 | f = gzip.GzipFile(filename, 'ab') ; f.write(data2 * 15) ; f.close() |
Andrew M. Kuchling | 605ebdd | 1999-03-25 21:50:27 +0000 | [diff] [blame] | 25 | |
Guido van Rossum | 052364b | 1999-04-07 19:00:58 +0000 | [diff] [blame] | 26 | f = gzip.GzipFile(filename, 'rb') ; d = f.read() ; f.close() |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 27 | assert d == (data1*50) + (data2*15) |
| 28 | |
| 29 | # Try .readline() with varying line lengths |
| 30 | |
| 31 | f = gzip.GzipFile(filename, 'rb') |
| 32 | line_length = 0 |
| 33 | while 1: |
| 34 | L = f.readline( line_length ) |
| 35 | if L == "" and line_length != 0: break |
| 36 | assert len(L) <= line_length |
| 37 | line_length = (line_length + 1) % 50 |
| 38 | f.close() |
| 39 | |
Fred Drake | 004d5e6 | 2000-10-23 17:22:08 +0000 | [diff] [blame] | 40 | # Try .readlines() |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 41 | |
| 42 | f = gzip.GzipFile(filename, 'rb') |
| 43 | L = f.readlines() |
| 44 | f.close() |
| 45 | |
| 46 | f = gzip.GzipFile(filename, 'rb') |
| 47 | while 1: |
| 48 | L = f.readlines(150) |
Fred Drake | 004d5e6 | 2000-10-23 17:22:08 +0000 | [diff] [blame] | 49 | if L == []: break |
Andrew M. Kuchling | 85ab738 | 2000-07-29 20:18:34 +0000 | [diff] [blame] | 50 | f.close() |
| 51 | |
Andrew M. Kuchling | 605ebdd | 1999-03-25 21:50:27 +0000 | [diff] [blame] | 52 | |
| 53 | os.unlink( filename ) |