Skip to content

Archives

  • tammikuu 2022
  • joulukuu 2021
  • marraskuu 2021
  • lokakuu 2021
  • syyskuu 2021

Categories

  • Ei kategorioita
Trend RepositoryArticles and guides
Articles

gzip – Tuki gzip-tiedostoille¶

On 24 marraskuun, 2021 by admin

Lähdekoodi: Lib/gzip.py

Tämä moduuli tarjoaa yksinkertaisen käyttöliittymän tiedostojen pakkaamiseen ja purkamiseen aivan kuten GNU-ohjelmat gzip ja gunzip tekisivät.

Datan pakkaamisesta huolehtii zlib-moduuli.

Moduuli gzip tarjoaa GzipFile-luokan sekä open()-, compress()– ja decompress()– mukavuusfunktiot.GzipFile-luokka lukee ja kirjoittaa gzip-muotoisia tiedostoja,pakkaa tai purkaa tiedot automaattisesti niin, että ne näyttävät tavalliselta tiedosto-objektilta.

Huomaa, että tämä moduuli ei tue muita tiedostomuotoja, joita gzip- ja gunzip-ohjelmat voivat purkaa, kuten esimerkiksi Compress- ja Pack-ohjelmilla tuotettuja tiedostoja.

Moduuli määrittelee seuraavat kohteet:

gzip.open(filename, mode=’rb’, compresslevel=9, encoding=None, errors=None, newline=None)¶

Avaa gzip-pakatun tiedoston binääri- tai tekstitilassa palauttaen tiedosto-objektin.

The filename-argumentti voi olla todellinen tiedostonimi (str tai bytes-olio) tai olemassa oleva tiedosto-olio, josta luetaan tai johon kirjoitetaan.

Tila-argumentti voi olla mikä tahansa seuraavista: 'r', 'rb', 'a', 'ab','w', 'wb', 'x' tai 'xb' binääritilassa tai 'rt','at', 'wt' tai 'xt' tekstitilassa. Oletusarvo on 'rb'.

The compresslevel-argumentti on kokonaisluku välillä 0-9, kutenGzipFile-konstruktorissa.

Binääritilassa tämä funktio vastaa GzipFilekonstruktoria: GzipFile(filename, mode, compresslevel). Tällöin koodaus-, virhe- ja rivinvaihto-argumentteja ei tarvitse antaa.

Tekstitilassa luodaan GzipFile-olio, joka kääritäänio.TextIOWrapper-instanssiin määritetyllä koodauksella, virheenkäsittelykäyttäytymisellä ja rivinpääte(i)llä.

Muutettu versiossa 3.3: Lisätty tuki sille, että tiedostonimi on tiedosto-objekti, tuki tekstitilalle,sekä koodaus-, virheenkäsittely- ja rivinvaihtoargumentit.

Muutettu versiossa 3.4: Lisätty tuki tiloille 'x', 'xb' ja 'xt'.

Muutettu versiossa 3.6: Hyväksyy polun kaltaisen objektin.

poikkeusgzip.BadGzipFile¶

Poikkeus, joka nostetaan virheellisistä gzip-tiedostoista. Se perii OSError:n. EOFError ja zlib.error voidaan myös herättää virheellisistä gzip-tiedostoista.

Uusi versiossa 3.8.

luokkagzip.GzipFile(filename=None, mode=None, compresslevel=9, fileobj=None, mtime=None)¶

Konstruktori GzipFile-luokalle, joka simuloi useimpia tiedosto-objektin metodeja lukuun ottamatta truncate()metodia. Ainakin yhdelle fileobj:stä ja filename:sta on annettava muu kuin triviaaliarvo.

Uuden luokan instanssin perustana on fileobj, joka voi olla tavallinen tiedosto, io.BytesIO-olio tai mikä tahansa muu tiedostoa simuloiva olio. Sen oletusarvo on None, jolloin filename avataan fileobjektin antamiseksi.

Jos fileobj ei ole None, filename-argumenttia käytetään vain beincluded in the gzip file header, joka voi sisältää pakkaamattoman tiedoston alkuperäisenfilenamen. Se on oletusarvoisesti fileobj:n tiedostonimi, jos se on erotettavissa; muussa tapauksessa se on oletusarvoisesti tyhjä merkkijono, ja tällöin alkuperäistä tiedostonimeä ei sisällytetä otsikkoon.

Tila-argumentti voi olla mikä tahansa seuraavista: 'r', 'rb', 'a', 'ab', 'w','wb', 'x' tai 'xb' riippuen siitä, luetaanko vai kirjoitetaanko tiedosto. Oletusarvo on fileobj:n tila, jos se on havaittavissa; muussa tapauksessa oletusarvo on 'rb'. Tulevissa Python-julkaisuissa fileobj:n tilaa ei käytetä. Kirjoittamista varten on parempi aina määrittää mode.

Huomaa, että tiedosto avataan aina binääritilassa. Jos haluat avata pakatun tiedoston tekstitilassa, käytä open() (tai kiedo GzipFile:siio.TextIOWrapper:llä).

The compresslevel-argumentti on kokonaisluku väliltä 0 – 9, joka säätelee pakkauksen tasoa; 1 on nopein ja tuottaa vähiten pakkausta, ja 9 on hitain ja tuottaa eniten pakkausta. 0ei sisällä pakkausta. Oletusarvo on 9.

Mtime-argumentti on valinnainen numeerinen aikaleima, joka kirjoitetaan virran viimeisimmän muutoksen aikakenttään pakkauksen yhteydessä. Se tulisi antaa vain pakkaustilassa. Jos se jätetään pois tai jos se on None, käytetään nykyistä aikaa. Katso lisätietoja mtime-attribuutista.

Objektin GzipFile-metodin close() kutsuminen ei sulje fileobj:tä, koska voit haluta liittää lisää materiaalia pakattujen tietojen jälkeen. Näin voit myös luovuttaa kirjoitusta varten avatun io.BytesIO-olion fileobj:ksi ja hakea tuloksena syntyneen muistipuskurin io.BytesIO-olion getvalue()-metodilla.

GzipFile tukee io.BufferedIOBase-rajapintaa,mukaan lukien iteraatio ja with-lause. Ainoastaantruncate()-metodia ei ole toteutettu.

GzipFile tarjoaa myös seuraavan metodin ja attribuutin:

peek(n)¶

Lue n pakkaamatonta tavua etenemättä tiedostoasentoa.Korkeintaan yksi yksittäinen lukukerta pakatulle virralle tehdään kutsun täyttämiseksi. Palautettujen tavujen määrä voi olla enemmän tai vähemmän kuin pyydetty.

Huomautus

Kutsu peek() ei muuta GzipFile-tiedoston sijaintia, mutta se voi muuttaa taustalla olevan tiedosto-objektin sijaintia (esim. jos GzipFile on muodostettufileobj-parametrilla).

Uusi versiossa 3.2.

mtime¶

Pakkauksen purkamisen yhteydessä viimeksi luetun otsikon viimeisimmän muutosajankohdan kentän arvo voidaan lukea tästä attribuutista kokonaislukuna. Alkuarvo ennen otsikoiden lukemista on None.

Kaikkien gzip-pakattujen virtojen on sisällettävä aikaleimakenttä. Jotkin ohjelmat, kuten gunzip, käyttävät aikaleimaa. Muoto on sama kuin time.time():n paluuarvo ja st_mtime-attribuutti os.stat():n palauttamasta objektista.

Muutettu versiossa 3.1: Lisättiin tuki with-lausekkeelle, konstruktoriargumentille themtime ja mtime-attribuutille.

Muutettu versiossa 3.2: Lisättiin tuki nollatäytteisille ja etsimättömille tiedostoille.

Muutettu versiossa 3.3: io.BufferedIOBase.read1()-metodi on nyt toteutettu.

Muutettu versiossa 3.4: Lisätty tuki 'x'– ja 'xb'-tiloille.

Muutettu versiossa 3.5: Lisätty tuki arbitrarybytes-tyyppisten objektien kirjoittamiselle.read()-metodi hyväksyy nyt argumentin None.

Muutettu versiossa 3.6: Hyväksyy polun kaltaisen objektin.

Vähennetty versiosta 3.9 lähtien: GzipFile:n avaaminen kirjoittamista varten ilman modeargumentin määrittelyä on vanhentunut.

gzip.compress(data, compresslevel=9, *, mtime=None)¶

Pakkaa data palauttaen pakatun datan sisältävän bytesobjektin. compresslevelillä ja mtime:llä on sama merkitys kuin edellä GzipFilekonstruktorissa.

Uusi versiossa 3.2.

Muutettu versiossa 3.8: Lisätty mtime-parametri toistettavaa tulostusta varten.

gzip.decompress(data)¶

Purkaa data ja palauttaa bytes-olion, joka sisältää pakkaamattoman datan.

Uutta versiossa 3.2.

Käyttöesimerkkejä¶

Esimerkki pakatun tiedoston lukemisesta:

import gzipwith gzip.open('/home/joe/file.txt.gz', 'rb') as f: file_content = f.read()

Esimerkki pakatun GZIP-tiedoston luomisesta:

import gzipcontent = b"Lots of content here"with gzip.open('/home/joe/file.txt.gz', 'wb') as f: f.write(content)

Esimerkki jo olemassaolevan tiedoston pakkaamisesta GZIP-pakkauksella:

import gzipimport shutilwith open('/home/joe/file.txt', 'rb') as f_in: with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out: shutil.copyfileobj(f_in, f_out)

Esimerkki siitä, miten GZIP-pakkaat binäärijonon:

import gzips_in = b"Lots of content here"s_out = gzip.compress(s_in)

Katso myös

Moduuli zlib

Datanpakkauksen perusmoduuli, jota tarvitaan gzip-tiedostomuodon tukemiseen.

Komentorivikäyttöliittymä¶

Moduuli gzip tarjoaa yksinkertaisen komentorivikäyttöliittymän tiedostojen pakkaamiseen tai pakkaamiseen.

Moduuli gzipsäilyttää syötetiedosto(t) suoritettuaan.

Muutettu versioon 3.8: Lisätty uusi komentorivikäyttöliittymä, jossa on käyttö.oletusarvoisesti CLI:tä suoritettaessa oletuspakkaustaso on 6.

Komentorivin asetukset¶

file¶

Jos tiedostoa ei ole määritetty, luetaan sys.stdin:stä.

--fast¶

Merkitse nopeinta pakkausmenetelmää (vähemmän pakkausta).

--best¶

Merkitsee hitaimman pakkausmenetelmän (paras pakkaus).

-d, --decompress¶

Pakkaa annettu tiedosto pois.

-h, --help¶

Näyttää ohjeviestin.

Vastaa Peruuta vastaus

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Arkistot

  • tammikuu 2022
  • joulukuu 2021
  • marraskuu 2021
  • lokakuu 2021
  • syyskuu 2021

Meta

  • Kirjaudu sisään
  • Sisältösyöte
  • Kommenttisyöte
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress