Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. def main(): #функция декодирования кода Хаффмана
  2. text = ''
  3. delete = 0
  4. encode = ''
  5. file = input('Введите путь к файлу с кодом Хаффмана: ')
  6. f = open(file, 'r', encoding='utf-8') #открываем файл с кодом Хаффмана
  7. s = [] #создаём пустой список, куда поместим код Хаффмана
  8. for i in f.read(): # цикл для записи в список
  9. s.append(i)
  10. f.close()
  11. file = input('Введите путь к файлу с таблицей кодировкой: ')
  12. f = open(file, 'r', encoding='utf-8') #открываем файл с таблицей кодировок
  13. i = 0
  14. while i < len(s): #цикл для декодирования кода Хаффмана
  15. text += s[i] #помещаем в переменную элементы списка, начиная с нулевого
  16. for line in f.readlines(): #цикл для считывания элементов из таблицы кодировок построчно
  17. letter = line[:line.find(':')] #переменная для хранения буквы
  18. code = line[line.find(':') + 1:] #переменная для хранения соответствующего кода
  19. if text == code[:code.find(' ')]: #проверка на совпадение элементов списка и кодировки буквы
  20. encode += letter #заносим в переменную буквы с соответствующим кодом
  21. text = '' #очищаем переменную с элементами таблицы кодировок
  22. del s[:delete] #удаляем из изначального списка элементы, которые уже участвовали в декодировании
  23. delete = 0 #обнуляем счётчик количетсва элементов для удаления из списка
  24. i = 0 #обнуляем переменную для обхода с начала нового списка
  25. break #останавливаем цикл
  26. f.seek(0) #переходим в начало файла с таблицей кодировок
  27. delete += 1 #инкрементируем счётчик количества элементов для удаления
  28. i += 1 #инкрементируем для перехода к следующему символу списка
  29. f.close()
  30. file = input('Введите путь к файлу с разжатым текстом: ')
  31. f = open(file, 'w', encoding='utf-8') #открываем файл для записи декодированного текста
  32. f.write(encode)
  33. f.close()
  34.  
  35. if __name__ == "__main__":
  36. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement