Operacje na plikach Zip, Tar, zlib w Pythonie
14 July 2008
Comments
Pobieranie danych o zawartości pliku ZIP
Biblioteka zipfile w dość łatwy sposób umożliwia nam pobranie danych o pliku ZIP:#!/usr/bin/env python
import zipfile
z = zipfile.ZipFile("plik.zip", "r")
for plik in z.namelist():
print 'Plik: ', plik,
bajty = z.read(plik)
print 'ma', len(bajty), 'bajtow'
NIEKTÓRE MEDOTY BIBLIOTEKI ZIPFILE:
is_zipfile(nazwa pliku) - sprawdza czy podany plik to archiwum ZIP
ZipFile(nazwa_pliku, tryb, kompresja) - otwiera plik ZIP i zwraca instancję ZipFile. Tryb może przyjąć argumenty: r - czytanie istniejącego pliku, a - dodawanie do istniejącego pliku, w - nadpisanie istniejącego pliku. Kompresja - ZIP_STORED (domyślne) lub ZIP_DEFLATED. Instancja ZipFile dysponuje dodatkowymi modułami i atrybutami:
Pobieranie danych z plików OpenOffice:
is_zipfile(nazwa pliku) - sprawdza czy podany plik to archiwum ZIP
ZipFile(nazwa_pliku, tryb, kompresja) - otwiera plik ZIP i zwraca instancję ZipFile. Tryb może przyjąć argumenty: r - czytanie istniejącego pliku, a - dodawanie do istniejącego pliku, w - nadpisanie istniejącego pliku. Kompresja - ZIP_STORED (domyślne) lub ZIP_DEFLATED. Instancja ZipFile dysponuje dodatkowymi modułami i atrybutami:
infolist() - zwraca listę obiektów ZipInfo dla wszystkich składników archiwum
namelist() - zwraca listę nazw składników archiwum
read(nazwa) - wczytuje zawartość archiwum dotyczącą składnika o podanej nazwie i zwraca w postaci napisu
write(nazwa pliku, archiwum, kompresja) - zapisuje plik w archiwum
import zipfile
if zipfile.is_zipfile("nazwa_pliku"):
print "to zip"
else:
print "nie jest to zip"
import zipfile
z = zipfile.ZipFile("plik.odt", "r")
print z.read('content.xml')
Tworzenie archiwum tar
By stworzyć archiwum tar (tar.bz2, tar.gz, tar) z katalogu i jego zawartości wystarczy skorzystać z modułu tarfile:import tarfile
tar = tarfile.TarFile.open('ścieżka/plik.tar.bz2', 'w:bz2')
tar.add('ścieżka do katalogu')
tar.close()
Kompresja plików za pomocą zlib
Chcemy skompresować wszystkie pliki z danego katalogu za pomocą biblioteki zlib. Niniejszy skrypt pokaże listę plików oraz stopień zmniejszenia rozmiaru po kompresji:import zlib
import glob
for file in glob.glob("katalog/*"):
wejscie = open(file, "rb").read()
wyjscie = zlib.compress(wejscie, zlib.Z_BEST_COMPRESSION)
print file, len(wejscie), "=>", len(wyjscie),
print "%d%%" % (len(wyjscie) * 100 / len(wejscie))
import zlib
import glob
for file in glob.glob("katalog/*"):
wejscie = open(file, "rb").read()
wyjscie = zlib.compress(wejscie, zlib.Z_BEST_COMPRESSION)
pliczek = file+'.zlib'
plik = open(pliczek, 'w')
plik.write(wyjscie)
plik.close()
print file, len(wejscie), "=>", len(wyjscie),
print "%d%%" % (len(wyjscie) * 100 / len(wejscie))
RkBlog
Comment article