Seite 1 von 1
undefinierbarer Fehler
Verfasst: Montag 5. Juni 2006, 19:23
von murph
Code: Alles auswählen
import zipfile, glob, os
file = zipfile.ZipFile("../../home/murph/meinedateien.zip")
wurzel = "/home/murph/meine_dateien"
def make(wurzel):
for root, dirs, files in os.walk(wurzel):
for name in files:
file,write(name, os.path-basename(name), zipfile.ZIP_DEFLATED)
for name in dirs:
wurzel += name
make(wurzel)
make(wurzel)
file.close()
Die Fehlermeldung:
root@murphs:/etc/init.d# ./archiver.py
Traceback (most recent call last):
File "./archiver.py", line 16, in ?
make(wurzel)
File "./archiver.py", line 12, in make
file.write(name, os.path.basename(name), zipfile.ZIP_DEFLATED)
File "/usr/lib/python2.4/zipfile.py", line 391, in write
st = os.stat(filename)
OSError: [Errno 2] No such file or directory: 'archiver.py~'
Tut mir Leid, aber ich habe keine Ahnung und verstehe nichts.
Nicht einmal eine Grobdiagnose habe ich.
Idee:
Ein Skript, der alle meine eigenen dateien bei jedem systemherunterfahren sichert in ienme zip-archiv
Verfasst: Montag 5. Juni 2006, 21:18
von DatenMetzgerX
archiver.py~ sieht nach einer backup Datei aus (linux

)
Das ganze für ich in ein Try + Except tun, dann hast du ruhe ^^
Die Datei existiert evtl. schon nicht mehr
Verfasst: Montag 5. Juni 2006, 21:24
von murph
genau das ist nicht so!
die datei existiert auf jeden fall! der fehler kommt ja, wenn ich die besagte datei ausführe! genau das ist ja das problem! ich führe die datei aus und sie verweist auf eien bakeup ihrer selbst!
Verfasst: Montag 5. Juni 2006, 22:26
von gerold
Hi murph!
Mit Zipfile arbeite ich nicht mehr, da ich einige Schwierigkeiten damit hatte und damals nicht raus bekommen habe warum.
Deshalb hier eine Variante mit Tarfile:
Code: Alles auswählen
import os
import os.path
import tarfile
SOURCEDIR = "/home/gerold/Desktop"
BASENAME = SOURCEDIR.split("/")[-1]
tar = tarfile.open("sample.tar.gz", "w:gz")
for root, dirs, files in os.walk(SOURCEDIR):
for filename in files:
filepath = os.path.join(root, filename)
virtual_filepath = "/" + BASENAME + filepath[len(SOURCEDIR):]
print virtual_filepath
tarinfo = tar.gettarinfo(
filepath, virtual_filepath
)
tar.addfile(tarinfo, file(filepath, "rb")) # Die Datei muss unbedingt binär geöffnet werden.
tar.close()
mfg
Gerold
Edit by Gerold: Kleinen Fehler im Code ausgebessert.
Stichworte: TAR tar relativ relative Pfad Pfade archivieren
Re: undefinierbarer Fehler
Verfasst: Montag 5. Juni 2006, 22:29
von gerold
murph hat geschrieben:Code: Alles auswählen
import zipfile, glob, os
file = zipfile.ZipFile("../../home/murph/meinedateien.zip")
wurzel = "/home/murph/meine_dateien"
def make(wurzel):
for root, dirs, files in os.walk(wurzel):
for name in files:
file,write(name, os.path-basename(name), zipfile.ZIP_DEFLATED)
for name in dirs:
wurzel += name
make(wurzel)
make(wurzel)
file.close()
Hi murph!
Ohne auf den Code weiter einzugehen:
1. Man sollte keine Variable "file" nennen, da damit der Befehl "file" überschrieben wird.
2. Zeile 7: Der Beistrich zwischen "file" und "write" gehört da nicht hin.
mfg
Gerold

Re: undefinierbarer Fehler
Verfasst: Dienstag 6. Juni 2006, 07:43
von BlackJack
murph hat geschrieben:Die Fehlermeldung:
root@murphs:/etc/init.d# ./archiver.py
Traceback (most recent call last):
File "./archiver.py", line 16, in ?
make(wurzel)
File "./archiver.py", line 12, in make
file.write(name, os.path.basename(name), zipfile.ZIP_DEFLATED)
File "/usr/lib/python2.4/zipfile.py", line 391, in write
st = os.stat(filename)
OSError: [Errno 2] No such file or directory: 'archiver.py~'
Tut mir Leid, aber ich habe keine Ahnung und verstehe nichts.
Nicht einmal eine Grobdiagnose habe ich.
Na eigentlich steht's doch da: Die Datei `archiver.py~` gibt's nicht, jedenfalls nicht im Verzeichnis wo `walk()` gestartet ist. Die Dateiliste bei `walk()` gibt nur die Dateinamen und keine Pfade dorthin an. Den kompletten Pfad musst Du also noch mit `os.path.join()` aus `root` und dem `name` "zusammenbauen".
Verfasst: Dienstag 6. Juni 2006, 15:16
von murph
ah, habe leider vor lauter bäume den wald nicht mehr gesehen.
natürlich gibt er das als liste aus un muss zusammengebacken werden...