Skip to content

Archives

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Categories

  • Brak kategorii
Trend RepositoryArticles and guides
Articles

gzip – Obsługa plików gzip

On 24 listopada, 2021 by admin

Kod źródłowy: Lib/gzip.py

Moduł ten udostępnia prosty interfejs do kompresji i dekompresji plików podobnie jak robiłyby to programy GNU gzip i gunzip.

Kompresję danych zapewnia moduł zlib.

Moduł gzip udostępnia klasę GzipFile, a także funkcje dogodnościopen(), compress() i decompress().Klasa GzipFile odczytuje i zapisuje pliki w formacie gzip, automatycznie kompresując lub dekompresując dane tak, że wyglądają one jak zwykłe obiekty plikowe.

Zauważ, że dodatkowe formaty plików, które mogą być dekompresowane przez programy gzip i gunzip, takie jak te produkowane przezcompress i pack, nie są obsługiwane przez ten moduł.

Moduł definiuje następujące elementy:

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

Otwórz plik skompresowany gzipem w trybie binarnym lub tekstowym, zwracając obiekt file.

Trument filename może być rzeczywistą nazwą pliku (obiekt str lubbytes), lub istniejącym obiektem pliku do odczytu z lub zapisu do.

Tryb argumentu może być dowolny z 'r', 'rb', 'a', 'ab','w', 'wb', 'x' lub 'xb' dla trybu binarnego, lub 'rt','at', 'wt', lub 'xt' dla trybu tekstowego. Domyślnie jest to 'rb'.

Targ compresslevel jest liczbą całkowitą od 0 do 9, tak jak dla konstruktoraGzipFile.

Dla trybu binarnego funkcja ta jest równoważna konstruktorowi GzipFile: GzipFile(filename, mode, compresslevel). W tym przypadku, argumentyencoding, errors i newline nie mogą być podane.

Dla trybu tekstowego, tworzony jest obiekt GzipFile i zawijany w instancjęio.TextIOWrapper z określonym kodowaniem, zachowaniem obsługi błędów i zakończeniem(ami) linii.

Zmienione w wersji 3.3: Dodano obsługę nazwy pliku będącej obiektem pliku, obsługę trybu tekstowego oraz argumenty kodowania, błędów i nowej linii.

Zmienione w wersji 3.4: Dodano obsługę trybów 'x', 'xb' i 'xt'.

Zmienione w wersji 3.6: Akceptuje obiekt podobny do ścieżki.

exceptiongzip.BadGzipFileś

Wyjątek podnoszony dla niepoprawnych plików gzip. Dziedziczy po OSError.EOFError i zlib.error mogą być również podnoszone dla nieprawidłowych plików gzipfiles.

Nowość w wersji 3.8.

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

Konstruktor dla klasy GzipFile, która symuluje większość metod obiektu file, z wyjątkiem metody truncate(). Przynajmniej jedna z wartości fileobj i filename musi mieć wartość nietrywialną.

Nowa instancja klasy jest oparta na fileobj, który może być zwykłym plikiem, obiektemio.BytesIO lub dowolnym innym obiektem symulującym plik. Domyślnie jest to None, w którym to przypadku nazwa pliku jest otwierana w celu dostarczenia obiektu fileobj.

Gdy fileobj nie jest None, argument filename jest używany tylko do uwzględnienia w nagłówku pliku gzip, który może zawierać oryginalną nazwę nieskompresowanego pliku. Domyślnie jest to nazwa pliku plikobj, jeśli można ją odróżnić; w przeciwnym razie domyślnie jest to pusty łańcuch i w tym przypadku oryginalna nazwa pliku nie jest uwzględniana w nagłówku.

Tryb argumentem może być dowolny z 'r', 'rb', 'a', 'ab', 'w','wb', 'x' lub 'xb', zależnie od tego, czy plik będzie odczytywany czy zapisywany. Domyślnie ustawiony jest tryb plikuobj, jeśli można go rozpoznać; w przeciwnym razie domyślnie ustawiony jest 'rb'. W przyszłych wydaniach Pythona tryb z fileobj nie będzie używany. Lepiej jest zawsze podawać tryb do zapisu.

Zauważ, że plik jest zawsze otwierany w trybie binarnym. Aby otworzyć skompresowany plik w trybie tekstowym, użyj open() (lub zawiń swoje GzipFile wio.TextIOWrapper).

Konkurs compresslevel jest liczbą całkowitą z zakresu od 0 do 9 kontrolującą poziom kompresji; 1 jest najszybsze i daje najmniejszą kompresję, a 9 jest najwolniejsze i daje największą kompresję. 0 to brak kompresji. Domyślnie jest to 9.

Argument mtime jest opcjonalnym numerycznym znacznikiem czasu, który ma być zapisany w polu czasu ostatniej modyfikacji w strumieniu podczas kompresji. Powinien być podawany tylko w trybie kompresji. Jeśli zostanie pominięty lub None, używany jest czas bieżący. Zobacz atrybut mtime po więcej szczegółów.

Wywołanie metody GzipFile obiektu close() nie zamykafileobj, ponieważ możesz chcieć dołączyć więcej materiału po skompresowanych danych. Pozwala to również na przekazanie obiektu io.BytesIO otwartego do zapisu jako fileobj i pobranie wynikowego bufora pamięci za pomocą metody getvalue() obiektuio.BytesIO.

GzipFile obsługuje interfejs io.BufferedIOBase, w tym iterację i instrukcję with. Jedynie metodatruncate() nie jest zaimplementowana.

GzipFile udostępnia również następującą metodę i atrybut:

peek(n)Ś

Odczytaj n nieskompresowanych bajtów bez przesuwania pozycji pliku.Aby spełnić żądanie, wykonywany jest co najwyżej pojedynczy odczyt na skompresowanym strumieniu. Liczba zwróconych bajtów może być większa lub mniejsza niż żądana.

Uwaga

Podczas gdy wywołanie peek() nie zmienia pozycji pliku GzipFile, może zmienić pozycję bazowego obiektu pliku (np. jeśli GzipFile został skonstruowany z parametremfileobj).

Nowość w wersji 3.2.

mtimeś

Podczas dekompresji, wartość pola czasu ostatniej modyfikacji w ostatnio odczytanym nagłówku może być odczytana z tego atrybutu, jako liczba całkowita. Wartość początkowa przed odczytaniem jakichkolwiek nagłówków wynosi None.

Wszystkie strumienie skompresowane gzip muszą zawierać pole thistimestamp. Niektóre programy, takie jak gunzip, wykorzystują znacznik czasu. Format jest taki sam, jak wartość zwracana przez time.time() i atrybut st_mtime obiektu zwracanego przez os.stat().

Zmienione w wersji 3.1: Dodano obsługę deklaracji with, a także argumentu konstruktoratime i atrybutu mtime.

Zmieniono w wersji 3.2: Dodano obsługę plików z zerowym paddingiem i unseekable.

Zmieniono w wersji 3.3: Zaimplementowano metodę io.BufferedIOBase.read1().

Zmieniono w wersji 3.4: Dodano obsługę trybów 'x' i 'xb'.

Zmieniono w wersji 3.5: Dodano obsługę zapisu arbitralnych obiektów typubytes.Metoda read() przyjmuje teraz argumentNone.

Zmieniono w wersji 3.6: Akceptuje obiekt podobny do ścieżki.

Deprecated since version 3.9: Otwieranie GzipFile do zapisu bez podania argumentu modeargument is deprecated.

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

Kompresuje dane, zwracając obiekt bytes zawierający skompresowane dane. compresslevel i mtime mają takie samo znaczenie jak w konstruktorze GzipFile powyżej.

Nowość w wersji 3.2.

Zmienione w wersji 3.8: Dodano parametr mtime dla odtwarzalności danych wyjściowych.

gzip.decompress(data)Ś

Dekompresja danych, zwrócenie obiektu bytes zawierającego nieskompresowane dane.

Nowość w wersji 3.2.

Przykłady użyciaś

Przykład odczytu skompresowanego pliku:

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

Przykład tworzenia skompresowanego pliku GZIP:

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

Przykład kompresji istniejącego pliku GZIP:

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)

Przykład, jak GZIP skompresować ciąg binarny:

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

Zobacz też

Moduł zlib

Podstawowy moduł kompresji danych potrzebny do obsługi formatu plików gzip.

Interfejs wiersza poleceńś

Moduł gzip zapewnia prosty interfejs wiersza poleceń do kompresji plików ordecompress.

Po wykonaniu moduł gzip zachowuje plik(i) wejściowy(e).

Zmienione w wersji 3.8: Dodanie nowego interfejsu wiersza poleceń z użyciem.Domyślnie, gdy użytkownik wykona CLI, domyślny poziom kompresji wynosi 6.

Opcje wiersza poleceńś

fileś

Jeśli plik nie jest określony, odczytaj z sys.stdin.

--fastś

Wskazuje najszybszą metodę kompresji (mniejsza kompresja).

--bestś

Wskazuje najwolniejszą metodę kompresji (najlepsza kompresja).

-d, --decompressś

Dekompresuje podany plik.

-h, --helpś

Pokazuje komunikat pomocy.

.

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Archiwa

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • 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