Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def main(): #функция декодирования кода Хаффмана
- text = ''
- delete = 0
- encode = ''
- file = input('Введите путь к файлу с кодом Хаффмана: ')
- f = open(file, 'r', encoding='utf-8') #открываем файл с кодом Хаффмана
- s = [] #создаём пустой список, куда поместим код Хаффмана
- for i in f.read(): # цикл для записи в список
- s.append(i)
- f.close()
- file = input('Введите путь к файлу с таблицей кодировкой: ')
- f = open(file, 'r', encoding='utf-8') #открываем файл с таблицей кодировок
- i = 0
- while i < len(s): #цикл для декодирования кода Хаффмана
- text += s[i] #помещаем в переменную элементы списка, начиная с нулевого
- for line in f.readlines(): #цикл для считывания элементов из таблицы кодировок построчно
- letter = line[:line.find(':')] #переменная для хранения буквы
- code = line[line.find(':') + 1:] #переменная для хранения соответствующего кода
- if text == code[:code.find(' ')]: #проверка на совпадение элементов списка и кодировки буквы
- encode += letter #заносим в переменную буквы с соответствующим кодом
- text = '' #очищаем переменную с элементами таблицы кодировок
- del s[:delete] #удаляем из изначального списка элементы, которые уже участвовали в декодировании
- delete = 0 #обнуляем счётчик количетсва элементов для удаления из списка
- i = 0 #обнуляем переменную для обхода с начала нового списка
- break #останавливаем цикл
- f.seek(0) #переходим в начало файла с таблицей кодировок
- delete += 1 #инкрементируем счётчик количества элементов для удаления
- i += 1 #инкрементируем для перехода к следующему символу списка
- f.close()
- file = input('Введите путь к файлу с разжатым текстом: ')
- f = open(file, 'w', encoding='utf-8') #открываем файл для записи декодированного текста
- f.write(encode)
- f.close()
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement