Питхон

Питхон гзип модул

Питхон гзип модул

У овој лекцији ћемо проучавати како можемо да користимо Питхон гзип модул за читање и писање у компримоване датотеке у Питхону. Највећа карактеристика коју нам овај модул пружа је да компресоване датотеке можемо третирати као нормалне објекте датотека, што нас штеди од сложености управљања датотекама и њиховим животним циклусом у нашем коду и омогућава нам да се фокусирамо на основну пословну логику програма.Тхе гзип модул пружа нам готово исте функције као што су ГНУ програми гунзип и гзип.

Писање компримованих датотека са опен ()

Започећемо са основним примером где можемо створити гзип датотеку и уписати неке податке у њу. За то треба да направимо датотеку и отворимо је режимом писања како би подаци могли да се у њу убаце. Погледајмо пример програма помоћу којег можемо записати податке у гзип датотеку:

импорт гзип
увоз ио
импорт ос
оутпут_филе = 'линкхинт_демо.ткт.гз '
врите_моде = 'вб'
са гзип-ом.отворите (оутпут_филе, врите_моде) као излаз:
са ио.ТектИОВраппер (оутпут, енцодинг = 'утф-8') као кодирање:
кодирати.врите ('У датотеку можемо уписати све што желимо.\ н ')
принт (оутпут_филе,
„садржи“, ос.стат (оутпут_филе).ст_сизе, 'бајтови')
ос.систем ('филе -б --миме ').формат (оутпут_филе))

Ево шта добијамо овом командом:

Писање у зип датотеку

Ако сада погледате структуру директоријума у ​​којој сте извршили ову скрипту, требало би да постоји нова датотека са именом оног што смо навели у нашем програму изнад.

Записивање више редова у компримовану датотеку

Такође можемо да напишемо више линија или заправо било који број линија у нашу гзип датотеку на врло сличан начин као што смо то урадили у претходном примеру. Да бисмо овај пример учинили другачијим, користићемо и модул итертоолс. Погледајмо пример програма:

импорт гзип
увоз ио
импорт ос
увоз итертоолс
оутпут_филе = 'линкхинт_демо.ткт.гз '
врите_моде = 'вб'
са гзип-ом.отворите (оутпут_филе, врите_моде) као излаз:
са ио.ТектИОВраппер (оутпут, енцодинг = 'утф-8') као енц:
енц.линије за писање (
итертоолс.репеат ('ЛинукХинт, понављајући исти ред!.\ н ', 10)
)
ос.систем ('гзцат линкхинт_демо.ткт.гз ')

Погледајмо излаз за ову наредбу:

Писање више редова

Читање компримованих података

Такође можемо читати компримовану датотеку коју смо креирали у последњем примеру користећи гзип модул уз врло једноставан позив на отворен функција:

импорт гзип
увоз ио
импорт ос
филе_наме = 'линкхинт_демо.ткт.гз '
филе_моде = 'рб'
са гзип-ом.отвори (име_датотеке, мод_датотеке) као улазну_датотеку:
са ио.ТектИОВраппер (инпут_филе, енцодинг = 'утф-8') у дец:
штампа (дец.читати())

Ево шта добијамо овом командом:

Читање гзип датотеке

Реадинг Стреамс

Због чињенице да текстуалне датотеке могу бити врло велике, паметно је отворити их у току, а не учитавати комплетну датотеку у један објекат који заузима пуно системске меморије, а у неким случајевима може чак и изазвати процес да се потпуно сруши. Погледајмо пример програма који чита датој компресованој датотеци у току:

импорт гзип
фром ио импорт БитесИО
увоз бинасции
моде_врите = 'вб'
моде_реад = 'рб'
нон_цомпрессед = б'Поновљена линија к пута.\ н '* 8
принт ('Некомпресовани подаци:', лен (нон_цомпрессед))
испис (некомпресовани)
буф = БитесИО ()
са гзип-ом.ГзипФиле (моде = моде_врите, филеобј = буф) као датотека:
датотека.писање (некомпресовано)
компресовано = буф.гетвалуе ()
принт ('Компримовани подаци:', лен (компримовани))
штампати (бинасции.хеклифи (компримован))
ин_буффер = БитесИО (компримовано)
са гзип-ом.ГзипФиле (моде = моде_реад, филеобј = ин_буффер) као датотека:
реад_дата = датотека.читање (лен (некомпримовано))
принт ('\ нПоново прочитајте:', лен (реад_дата))
принт (реад_дата)

Погледајмо излаз за ову наредбу:

Читање гзип датотеке у току

Иако је програм био мало дугачак, заправо смо само користили Питхон модуле да отворимо датотеку и преусмеримо садржај на конзолу са баферисаним објектом читача.

Закључак

У овој лекцији смо погледали како можемо да користимо Питхон гзип модул за компримовање и декомпресовање датотека у Питхону. Највећа карактеристика коју нам ова библиотека пружа је да компресоване датотеке можемо третирати као нормалне објекте датотека.

Прочитајте више постова заснованих на Питхону овде.

Како појачати ФПС у Линуку?
ФПС је скраћеница за Фрејмова у секунди. Задатак ФПС-а је да мери брзину кадрова у репродукцијама видео записа или играчким перформансама. Једноставни...
Најпопуларније лабораторијске игре Оцулус Апп
Ако сте власник Оцулус слушалица, онда морате бити упознати са бочним учитавањем. Бочно учитавање је поступак инсталирања не-продавничког садржаја на ...
10 најбољих игара за играње на Убунту-у
Виндовс платформа је била једна од доминантних платформи за играње игара због огромног процента игара које се данас развијају да би подржале Виндовс. ...