File: helpers.py

package info (click to toggle)
node-deflate-js 0.2.3-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 248 kB
  • sloc: javascript: 1,817; python: 166; makefile: 5
file content (63 lines) | stat: -rw-r--r-- 1,806 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python

import zlib
import subprocess as sp

def deflate(filename, outfile=None, level=6):
	f = open(filename)
	data = f.read()
	f.close()

	compress = zlib.compressobj(
		level,                # level: 0-9
		zlib.DEFLATED,        # method: must be DEFLATED
		-zlib.MAX_WBITS,      # window size in bits:
		                      #   -15..-8: negate, suppress header
		                      #   8..15: normal
		                      #   16..30: subtract 16, gzip header
		zlib.DEF_MEM_LEVEL,   # mem level: 1..8/9
		0                     # strategy:
		                      #   0 = Z_DEFAULT_STRATEGY
		                      #   1 = Z_FILTERED
		                      #   2 = Z_HUFFMAN_ONLY
		                      #   3 = Z_RLE
		                      #   4 = Z_FIXED
	)
	deflated = compress.compress(data)
	deflated += compress.flush()

	if outfile != None:
		f = open(outfile, 'w')
		f.write(deflated)
		f.close()

	return deflated

def inflate(filename, outfile=None):
	f = open(filename)
	data = f.read()
	f.close()

	decompress = zlib.decompressobj(-zlib.MAX_WBITS)  # see above
	inflated = decompress.decompress(data)
	inflated += decompress.flush()

	if outfile != None:
		f = open(outfile, 'w')
		f.write(inflated)
		f.close()

	return inflated

"""
Convenience function for running a command bash-like

@param command- string version of a command to run on
@param shell- Whether to run this through the shell; used in subprocess.Popen (default: true)
@return Object with properties 'returncode', 'stdout', and 'stderr'
"""
def run_cmd(command, shell=True):
	process = sp.Popen(command, shell=shell, stdout = sp.PIPE, stderr = sp.PIPE)
	stdout, stderr = process.communicate()
	returncode = process.returncode
	return {'returncode' : returncode, 'stdout' : stdout, 'stderr' : stderr}