v / vlib / compress / deflate / interop / deflate_ref.py
27 lines · 22 sloc · 718 bytes · 96c365159d037716a7097f6b02e4b4b82edd0a8a
Raw
1import sys, zlib
2
3def rf(p):
4 with open(p, "rb") as f: return f.read()
5
6def wf(p, b):
7 with open(p, "wb") as f: f.write(b)
8
9if len(sys.argv) != 4:
10 print("usage: py_ref compress|decompress|gzip|gunzip in out", file=sys.stderr)
11 sys.exit(2)
12
13mode, inp, outp = sys.argv[1], sys.argv[2], sys.argv[3]
14data = rf(inp)
15if mode == "compress":
16 wf(outp, zlib.compress(data))
17elif mode == "decompress":
18 wf(outp, zlib.decompress(data))
19elif mode == "gzip":
20 co = zlib.compressobj(level=6, wbits=16 + zlib.MAX_WBITS)
21 wf(outp, co.compress(data) + co.flush())
22elif mode == "gunzip":
23 wf(outp, zlib.decompress(data, 16 + zlib.MAX_WBITS))
24else:
25 print("unknown mode", file=sys.stderr)
26 sys.exit(2)
27
28