Python-LZW-Compressor
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:A simple LZW compressor written in Pyhton. It's not very practical considering speed and memory usage, but can be instructive in some ways.
# Общо за проекта

Проектът реализира алгоритъма за компресия LZW, като се полза 64K или 16MB речник. При запълване речникът се изпразва и пълни наново.

Проектът е разработен от *Светлин Анков* 

# Структура на проекта

## compress

Реализира компресията. Изпълнява се чрез извикване като метод или от command prompt-а. При извикване без параметри ще даде хелп.

*   *process\_command\_line(arguments, automated = False)* – Обработва аргументите от CMD
*   *compress(file\_in, file\_out, buffer\_size, large\_dict)* – Инициализира компресията
*   *compress\_more(f, o, buffer\_size, dict\_size\_large, flen, read_overall, t)* – Реализира самата компресия. Работи докато речника се запълни или входния буфер се запълни. Викан многократно от *compress* докато файлът бъде прочетен. При всяко извикване речникът се прави наново.
*   *output\_code\_for\_pattern\_to\_disc(buffer\_writer, position, o)* – Записва output буфера на диска.
*   *output\_code\_for\_pattern(buffer\_writer, position, code, large_dict)* – Записва код в текущия буфер.

## decompress

Реализира **де**компресията. Изпълнява се чрез извикване като метод или от command prompt-а. При извикване без параметри ще даде хелп.

*   *process\_command\_line(arguments, automated = False)* – Обработва аргументите от CMD
*   *decompress(file\_in, file\_out, buffer\_size, large\_dict)* – Инициализира декомпресията. Проверява дали файлът започва с магическия код, ако не хвърля *ArchiveError*. 
*   *decompress\_more(f, o, buffer\_size, dict\_size\_large, flen, read_overall, t)* – Реализира самата декомпресия. Работи докато няма повече за четене или е прочетена команда „FLUSH DICTIONARY“. Викан многократно от *decompress* докато файлът бъде прочетен. При всяко извикване речникът се прави наново.
*   *def get\_input\_code(f, large_dict)* – Прочита един (дву или три байтов) код.
*   *def output\_pattern\_for_code(o, pattern)* – За момента просто записва шаблон на диска.

## constants

Съдържа константи ползвани при декомпресията и компресията.

## compare_files

Сравнява файлове байт по байт. Използва се от Unit тестовете.

## test_*

Тестове

*   **test\_compression\_basic** – Тества със случайни изрязъци от wiki.xml-а. Общо взето занимава се с малка файлове
*   **test\_compression\_additional** – Допълнителен тест върху файлове от различни типове.
*   **test\_compression\_wiki** – Тест за компресия на BG WikiDUMP, като ползва най-тежките настройки. Освен Sanity Check, проверява дали е достигнато изисканото ниво на компресия (30%)
  • test_bad_file – Пробва да зададе на декомпресора файл, който не е от LZW формат.
  • ## testdata\ Данните за тестовете ## doc\ Тази докемунтация

    本源码包内暂不包含可直接显示的源代码文件,请下载源码包。