type=str, help='filename to compress or decompress', default='PS1_change.dat') parser.add_argument('-d', '--decompress', help='decompress file', action='store_true') args = parser.parse_args() lzw = LZW() if not args.decompress: # read in the file f = open(args.filename, 'rb') compressed = [chr(k) for k in array.array("B", f.read())] f.close() # encode and output x = lzw.encode(compressed) new_filename = args.filename + '.encoded' x.write_to_file(new_filename) print("Saved encoded file as %s" % new_filename) else: b = BitString() b.read_in_file(args.filename) x = lzw.decode(b) new_filename = args.filename + '.decoded' with open(new_filename, "w") as f: f.write(x) print("Saved decoded file as %s" % new_filename)