Interesuje Was tworzenie plików zarchiwizowanych? W Pythonie robi się to bardzo łatwo i wystarczy Wam tylko jeden moduł: moduł "zipfile"! Usiądźcie sobie wygodnie i przeczytajcie treść niniejszego artykułu, a uzyskacie garść podstawowych informacji w jaki sposób utworzyć pełnoprawny plik typu archiwum ZIP.

MODUŁ NALEŻY DO STANDARDOWEJ BIBLIOTEKI

Włączyliście już wiersz poleceń? To go wyłączcie. Python posiada już "sam w sobie" omawiany moduł, nie wymaga on instalacji poprzez system zarządzania pakietami "pip". Możemy od razu z niego skorzystać importując "zipfile" przy użyciu znanej już instrukcji. W tym artykule będę przedstawiał inny zapis importowania, a mianowicie:

from zipfile import *

z bardzo prostego powodu: unikniemy stałego pisania przedrostków "zipfile" za każdym razem, gdy będziemy chcieli się odwołać do którejkolwiek funkcji lub czegokolwiek innego zawartego w tym module.

TWORZENIE ARCHIWUM

Pierwszym punktem będzie poznanie sposobu tworzenia samego archiwum w formacie ZIP. Moduł "zipfile" udostępnia klasę "ZipFile" (pierwsze litery obu słów z dużych liter) dzięki której po przypisaniu zmiennej wartości zwracanej przez konstruktor, natychmiast ujrzycie nowy plik utworzony w tym samym katalogu z rozszerzeniem ".zip". Używając omówionej instrukcji "with", całe tworzenie "suchego" archiwum składa się tak naprawdę z jednej instrukcji:

with ZipFile([łańcuch znaków jako ścieżka do pliku], [łańcuch znaków jako tryb obsługi pliku]) as z:
    pass

No dobra, z dwóch. Słowo kluczowe "pass" w języku Python oznacza dosłownie "nic nierobienie", natomiast sama instrukcja musi tam "sterczeć" jeżeli w chwili obecnej nie chcemy tam wprowadzać żadnej linijki kodu. Gdy dodamy chociaż jedną już coś robiącą instrukcję, wtedy "pass" musi przestać istnieć, gdyż wyskoczy błąd.

Parametry formalne prezentują się identycznie co przy obsłudze zwykłych plików tekstowych więc tylko odeślę Was do tamtego wpisu, aby się nie powtarzać. Możecie jeszcze skorzystać z zapisu tradycyjnego:

z = ZipFile([łańcuch znaków jako ścieżka do pliku], [łańcuch znaków jako tryb obsługi pliku])

z.close()

pamiętając wówczas, że już sami ponosicie odpowiedzialność za zamykanie pliku! Miejcie też na względzie fakt, że jeśli plik o podanej ścieżce i nazwie już istnieje, zostanie on od razu nadpisany bez Waszej wiedzy ani pytania czy chcecie nadpisać!

MODUŁ "ZIPFILE". OPERACJE DLA ZAPISU DANYCH

Korzystając z podanych metod, zalecam używanie trybu obsługi pliku "w".

DODAWANIE PLIKÓW DO ARCHIWUM

Omawiana klasa oraz moduł "zipfile" udostępniają szereg metod pozwalających na banalną kontrolę zawartości plików w archiwum. Na początek dodawanie pliku. To jest "write". Wystarczy tę metodę wywołać ze zmiennej przechowującej referencję do naszego nowo utworzonego archiwum, a plik, umieszczony w ścieżce podanej w jedynym akceptowalnym parametrze w postaci łańcucha znaków, zostanie wprowadzony.

[plik zip].write([łańcuch znaków jako ścieżka do pliku])

Widzicie? Jedna instrukcja więcej i po uruchomieniu programu, podany przez nas plik zostanie osadzony w archiwum ZIP.

Metoda "write" klasy "zipfile" w Pythonie

"write" pozwala dodać wszelkiego rodzaju pliki do otwartego archwiwum.

USUWANIE PLIKÓW Z ARCHIWUM

Od razu piszę, że moduł "zipfile" nie udostępnia możliwości usuwania pliku z już istniejącego archiwum ZIP. Jedynym sposobem byłoby wykonanie utworzenie osobnego archiwum i dodanie wszystkich plików pojedynczo z wyjątkiem wybranych, w asyście instrukcji warunkowych.

MODUŁ "ZIPFILE". OPERACJE DLA ODCZYTU DANYCH

Korzystając z podanych metod, zalecam używanie trybu obsługi pliku "r".

WYDOBYWANIE PLIKÓW Z ARCHIWUM

Kolejna możliwość to wydobycie lub też "wyjęcie" dowolnego pliku z już istniejącego archiwum. Tu z kolei kłania się metoda "extract". Wymaga podania jedynie łańcucha znaków jako ścieżki do pliku. Uruchomienie programu skutkować będzie wejściem do archiwum, wyjęciem pliku i zamknięciem archiwum.

Drugą metodą o podobnej nazwie jest "extractall". Nie przyjmując żadnych parametrów, wydobywa wszystkie napotkane pliki jak leci.

WYPISYWANIE LISTY PLIKÓW ZNAJDUJĄCYCH SIĘ W ARCHIWUM

Potrzebujecie jedynie zestawienia nazw wszystkich plików w archiwum? Umożliwi Wam to metoda "namelist". Zwraca ona listę łańcuchów znaków reprezentujących nazwę każdego wykrytego pliku, a w połączeniu z funkcją "print" wyświetli Wam całą jej zawartość.

Metoda "namelist" klasy "zipfile" w Pythonie
Działanie metody "namelist" klasy "zipfile" w Pythonie

Metoda "namelist" zwraca listę łańcuchów znaków w postaci wykrytych plików w podanym archiwum.


Z fundamentalnych operacji widziałbym tyle do przekazania. Moduł "zipfile" znacznie upraszcza robotę gdy przychodzi nam do głowy tworzenie i manipulacja archiwum ZIP najprościej jak tylko można.

PODOBNE ARTYKUŁY