![]() |
|
URL dieses Artikels:
Daten mit Python komprimieren
Python eignet sich für viele Anwendungsbereiche: es ist plattform-neutral, leicht zu erlernen und verfügt über eine gut lesbare Syntax (im Unterschied zu Perl/PHP). Zudem ist die Standardbibliothek reich an Modulen: Zum Beispiel ist das Modul zipfile sehr nützlich. Das folgende Beispiel (zipmod1.py) zeigt, wie schnell man damit ein zip-Archiv erstellt:
#!/usr/bin/env python
import os, sys, glob, zipfile
def create(name, patt):
try:
archiv = zipfile.ZipFile(name, "w")
for f in glob.glob(patt):
archiv.write(f, os.path.basename(f), zipfile.ZIP_DEFLATED)
archiv.close()
except:
print '\n', sys.exc_type, ' ', sys.exc_value, '\n'
if __name__ == '__main__':
archiv = sys.argv[1]
create(archiv, '*.c')
Im Beispiel wird auch das Modul glob verwendet; dasselbe sorgt dafür, dass die Arbeit mit File-Pattern vereinfacht wird (pydoc glob liefert weiterführende Informationen). Deshalb reicht es aus, die letzte Anweisung des Programms (create(archiv, '*.c')) mit einem Platzhalter (*.c) aufzurufen. Im Beispiel muss auf der Konsole der Name für das zu erstellende Archiv angegeben werden, danach werden alle Dateien mit den Endung *.c in das Archiv gepackt:
ich@meinrechner:~> python zipmod1.py sourcen.zipSind Sie vielmehr an den Inhalten - im folgenden Beispiel (zipmod2.py) die ersten fünfhundert Zeichen - der gepackten Dateien interessiert sind, hilft das nächste Skript weiter:
#!/usr/bin/env python
import sys, zipfile
def showData(archiv):
try:
res = []
f = zipfile.ZipFile(archiv, "r")
for n in f.namelist():
data = f.read(n)
info = "[FILE: %s, LENGTH: %d]\n\n %s" % (n, len(data), repr(data[:500]))
res.append(info)
return res
except:
print '\n', sys.exc_type, ' ', sys.exc_value, '\n'
if __name__ == '__main__':
archiv = sys.argv[1]
RES= showData(archiv)
print
for x in RES:
print x, '\n'
print
Auch hier wird der Archivname angegeben:
ich@meinrechner:~> python zipmod2.py meine_sourcen.zipSo effektiv ist Python: mit ein paar Zeilen Code baut man sich im Handumdrehen praktische Tools. Thomas Kaufmann |
|
© 2002 Software & Support Verlag GmbH. Vervielfältigung
nur mit Genehmigung des Verlags. Alle Markennamen sind in der Regel
eingetragene Warenzeichen der entsprechenden Unternehmen oder Organisationen.
Fragen? ... zum Angebot des Software & Support Verlags: info@entwickler.com ... zu dieser Website: webmaster@entwickler.com |