Seite 1 von 1

Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 11:20
von JoB
Folgendes script führt bei mir zu keinem Ergebnis?

Code: Alles auswählen

import zipfile
import os,stat, sys, arcpy
from cStringIO import StringIO
def createZip(path):
    def walktree (top = ".", depthfirst = True):
        names = os.listdir(top)
        if not depthfirst:
            yield top, names
        for name in names:
            try:                
                st = os.lstat(os.path.join(top, name))
            except os.error:
                continue
            if stat.S_ISDIR(st.st_mode):
                for (newtop, children) in walktree (os.path.join(top, name),
                    depthfirst):
                        yield newtop, children
        if depthfirst:
            yield top, names
    list=[]
    for (basepath, children) in walktree(path,False):
        for child in children:
            f=os.path.join(basepath,child)
            if os.path.isfile(f):
                f = f.encode(sys.getfilesystemencoding())
                list.append( f )
    f=StringIO()
    file = zipfile.ZipFile(f, "w")
    for fname in list:
        nfname=os.path.join(os.path.basename(path),fname[len(path)+1:])
        file.write(fname, nfname , zipfile.ZIP_DEFLATED)
    file.close()
    f.seek(0)
    return f

path = r"R:\Karto\Bierer2015\Webkarten"
outZipFile = r"R:\Karto\Bierer2015\Datenbank_RP"

createZip(path)
Warum?

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 11:23
von EyDu
Und das heißt? Was erwartest du denn, und was passiert? Gibt es eine Fehlermeldung? Fackelt dein Rechner ab? Bellt dein Hund? Etwas mehr Information musst du schon liefern.

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 11:27
von JoB
Dachte es gibt ein Zipfile ?

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 11:28
von JoB
Keine Fehlermeldung, kein abbrennen, kein nichts. Gähnendes Schweigen vom PC?

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 11:32
von Sr4l
Liegt daran das du die Datei nirgends schreibst. Du verwendest `outZipFile` auch garnicht.

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 11:37
von JoB
outZipFile ist von einem früheren Versuch, wird nicht verwendet.

Dachte ich schreibe den Ordnerinhalt von Path ab Zeile 27?

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 11:40
von Sr4l
Ja das tust du in ein StringIO ein file like object im RAM.

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 11:44
von JoB
Und wie wird daraus eine echte gezippte Datei?

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 11:52
von EyDu
Indem du das Python-Tutorial aus der Dokumentation durcharbeitest, den Abschnitt über Dateioperationen verstehst und dir *nicht* deinen Code wild aus dem Internet kopierst und zusammenklebst.

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 12:18
von Sr4l
JoB hat geschrieben:Und wie wird daraus eine echte gezippte Datei?
Zur Ergänzung zu EyDu's Tipps: StringIO wandelt man nicht einfach in eine Datei um, man tauscht die Funktionen aus.

Wenn du allerdings wirklich noch nicht das Python Tutorial durchgearbeitet hast (nicht nur lesen) dann solltest du das unbedingt tun. Es ist nicht lang und vermittelt sehr viel.

https://docs.python.org/2/library/functions.html#open
https://docs.python.org/2/library/stringio.html

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 12:23
von BlackJack
@JoB: Warum `walktree()` definieren und nicht `os.walk()` verwenden? Und `os.lstat()` und `stat.S_ISDIR()` statt `os.path.isdir()`?

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 12:30
von EyDu
@BlackJack: Weil der Code einfach von hier kopiert wurde. Da wurde das halt alles nicht benutzt ;-)

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 13:04
von JoB
@EyDu:
Ist nicht wild kopiert, nur aus einer von dir gefundenen Quelle geklaut :-)
Danke für die hilfreichen Kommentare ...

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 13:26
von JoB
So neu geklaut - führt zu folgender Fehlermeldung:
WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden: 'Pflegekataster2013.shp'
Datei existiert aber ???

Code: Alles auswählen

import zipfile
import os,stat, sys, arcpy

path = r"R:\Karto\Bierer2015\Webkarten"
NewPath = r"C:\temp2"

for root, dirs, files in os.walk(path):
    for f in files:
        fname = os.path.join(root, f)
        new_path = os.path.normpath(fname.replace(NewPath, ''))
        # zipfile.ZipFile(fname, 'w' , zipfile.ZIP_DEFLATED)
        with zipfile.ZipFile(fname, 'w') as myzip:
            myzip.write(f)

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 13:59
von BlackJack
@JoB: Existiert die im aktuellen Arbeitsverzeichnis oder vielleicht doch eher irgendwo unter ``R:\Karto\Bierer2015\Webkarten``!? Und die nächste Frage ist dann ob Du die Datei da nicht gerade durch die ZIP-Datei überschrieben hast.

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 14:05
von Hyperion
Ich frage mich ja eher, wieso man etwas mit Python macht, wenn man es gar nicht lernen will... da würde ich Batch-Vorgänge eben mit einer Shell lösen :K

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 14:15
von JoB
Ja richtig liegt in einem Ordner unterhalb, aber auch dann passiert nichts (vollständiger Pfad angegeben), Daten auch nicht überschrieben?

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 14:37
von JoB
Lerne doch gerade zippen, nur finde keine Spielpartner :roll:

Re: Zip Files ?

Verfasst: Mittwoch 25. Februar 2015, 17:03
von sparrow
Hmmm... schreib doch mal hinter jede Zeile was du denkst was sie tut.
Da sind schlicht alle Grundlagen falsch, die kann man auch schwerlich herbei erklären.

Schnapp dir Tutorial und leg los.