Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.09 KB | None | 0 0
  1. #
  2. #
  3. #
  4. #Alice Zhang
  5. #Huffman encoding
  6. #HW#9
  7.  
  8. def main():
  9.     fileName = intro()
  10.     original = read_file(fileName)
  11.     parts = subtractStuff(original)
  12.     text = parts[0]
  13.     listKey = eval(parts[1])
  14.     list2 = eval(parts[2])
  15.     leftOver =parts[3]
  16.     string = decode1(text, leftOver)
  17.     translated = ''
  18.     translated = decode2(string, listKey, list2, translated)
  19.     print "translated is " , translated
  20.     f = open(fileName+ ".DECODED", 'w')
  21.     f.write(translated)
  22.     print "Output written to file: " + fileName + '.DECODED'
  23.  
  24. def intro():
  25.     fileName = raw_input("Enter name of file to be UNcompressed (must end in .HUFFMAN)")
  26.     return fileName
  27.  
  28. def read_file(fileName):
  29.     text_file = open(str(fileName))
  30.     original = text_file.read()
  31.     text_file.close()
  32.     return original
  33.  
  34. def subtractStuff(original):
  35.     leftOver=original[0]
  36.     original = original[1:]
  37.     breakPoint = original.index('\n')
  38.     listKey = original[:breakPoint]
  39.     original = original[breakPoint+1:]
  40.     breakPoint = original.index('\n')
  41.     list2 = original[:breakPoint]
  42.     original = original[breakPoint:]
  43.     return [original, listKey, list2, leftOver]
  44.  
  45. def decode(original):
  46.     if original == '': return ''
  47.     else: return numToBinary(ord(original[0]))+decode(original[1:])
  48.  
  49. def decode1(text, leftOver):
  50.     text = text[:-int(leftOver)]
  51.     print text
  52.     return decode(text)
  53.    
  54.  
  55. def decode2(string, listKey, list2, translated):
  56.     if string == '': return ''
  57.     else:
  58.         for n in range(1,8):
  59.             list1 = []
  60.             if str(string[:n]) in listKey:
  61.                 translated = translated + str(list2[listKey.index(string[:n])])
  62.                 print "translated", translated
  63.                 list1.append(n)
  64.                 print "list1 is ", list1
  65.                 break
  66.             print "blah is", list1[0]
  67.         return decode2(string[(list1[0]):], listKey, list2, translated)
  68.  
  69. def numToBinary(N):
  70.     """convert base-10 N to binary"""
  71.     if N==0: return ''
  72.     elif N%2==1: return numToBinary(N/2) +'1'
  73.     else:
  74.         return numToBinary(N/2) +'0'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement