Problem mit .zip-Sicherungsdateien

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Cucum
User
Beiträge: 4
Registriert: Mittwoch 28. Oktober 2009, 12:09

Hi leute

Ich habe vor kurzem angefangen mich in Python einzuarbeiten...Hab ansonsten noch keine Programmiererfahrung und bin jetzt dabei ein erstes Programm zu schreiben.(nach Anleitung von dem Buch bytesofpython, wenn das jmd kennt...)

Aufgabe war es nun ein Programm zu schreiben, mit dessen Hilfe bestimmte Dateien als ZIP-Datei gesichert werden sollten...
Die Lösungen stehen in dem Buch und nachdems bei mir nicht geklappt hat habe ich es einfach abgetippt (darum die ganzen Kommentare darin^^)...Nur leider funktioniert es immernoch nicht :x.Vielleicht weiß ja jmd was falsch ist^^
Hier ist das Programm:

Code: Alles auswählen

import os
import time

#1. Die Dateien und Verzeichnisse, die gesichert werden sollen werden in
#der folgenden Liste angegeben

quellen = ['G:\\Schule', 'G:\\Sicherheit']

#2. Die Sicherung muss in das folgende Verzeichnis gespeichert werden:
ziel_verzeichnis = 'C:\Users\Tamara\Desktop\Sicherungen'

#3. Die Dateien werden in einer ZIP-Datei gesichert.

#4. Der Name der ZIP-Datei setzt sich aus dem aktuellen Datum
# und der Uhrzeit wie folgt zusammen:
ziel = ziel_verzeichnis + time.strftime('%Y%m%d%H%M%S') + '.zip'

#5.
zip_befehl = 'zip -qr %s %s' % (ziel, '  '.join(quellen))

#Sicherung starten
if os.system(zip_befehl) == 0:
    print 'Erfolgreiche Sicherung nach', ziel
else:
    print 'Sicherung fehlgeschlagen'
...und dann kommt immer "Sicherung fehlgeschlagen" :?
...achja ich benutze Windows und hab für zip-Dateien "7-zip" drauf :)

Danke schonmal!
lg
cucum
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

- Du willst subprocess.Popen benutzen!;-)
- Pfade stets als raw-String angeben: r"G:\Schule" (oder sogar so: r"G:/Schule"), damit vermeidest Du das Escapen wo evtl. auch der Fehler bei Dir liegt (der Pfad nach der Liste!)
- Pfade setzt man mit os.path.join() zusammen

Das so auf die Schnelle.

Welches Buch nutzt Du denn?

Es gibt in der Standard-Lib doch Funktionen fürs zippen. Wieso da ein externes Programm bemühen? Da würde ich am Anfang doch zur Übung auf die eingebauten Dinge zurückgreifen.
BlackJack

@Cucum: Ist das `zip`-Programm denn überhaupt installiert und im %PATH% von Windows erreichbar!?
Cucum
User
Beiträge: 4
Registriert: Mittwoch 28. Oktober 2009, 12:09

danke erstma für die antwort :D
Ich hab bytesofpython gedownloaded und da ich im Moment noch nich grad viel kann bei python dacht ich, ich mach erstmal was da steht und experimentier danach rum^^
was ist subprocess.Popen?...vlt sollt ichs wissen wenn ichs benutzt hab aber ich weiß es jedenfalls nicht xD
naja das mit den Pfaden hab ich geändert:

Code: Alles auswählen

import os
import time

#1. Die Dateien und Verzeichnisse, die gesichert werden sollen werden in
#der folgenden Liste angegeben

quellen = [r'G:/Schule', r'G:/Sicherheit']

#2. Die Sicherung muss in das folgende Verzeichnis gespeichert werden:
ziel_verzeichnis = r'C:/Users/Tamara/Desktop/Sicherungen'

#3. Die Dateien werden in einer ZIP-Datei gesichert.

#4. Der Name der ZIP-Datei setzt sich aus dem aktuellen Datum
# und der Uhrzeit wie folgt zusammen:
ziel = ziel_verzeichnis + time.strftime('%Y%m%d%H%M%S') + '.zip'

#5.
zip_befehl = 'zip -qr %s %s' % (ziel, ' '.join(quellen))

#Sicherung starten
if os.system(zip_befehl) == 0:
    print 'Erfolgreiche Sicherung nach' , ziel
else:
    print 'Sicherung fehlgeschlagen'
...aber jetzt zeigt er nichmal an "Sicherung fehlgeschlagen" sondern "invalid syntax" xD
Cucum
User
Beiträge: 4
Registriert: Mittwoch 28. Oktober 2009, 12:09

@BlackJack

ja es ist installiert...
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Statt os.system solltest du subprocess.POpen nutzen.
Genaueres steht in der Modulbeschreibung:
http://docs.python.org/library/subprocess.html

In der Dokumentation findet sich auch das Kapitel:
"Data Compression and Archiving" Vielleicht willst du ja auch davon was nutzen und nicht das externe zip-Programm.
http://docs.python.org/library/archiving.html

Verwende os.path.join für die Pfadangaben.

Diese Dinge wurden alle schon mal erwähnt und von dir ignoriert?!

Dann weiter:
Wenn du einen Syntax-Fehler bekommst, solltest du vielleicht sagen WO dieser auftritt.

Zu jeder Zeile ein Kommentar ist sehr schlechter Stil (auf jeden Fall in einem Python-Skript, bei Assembler sieht es da anders aus ;) ). Ist doch logisch was z.B. in einem Backup-Skript die Variable ``ziel_verzeichnis`` darstellen soll...
Cucum
User
Beiträge: 4
Registriert: Mittwoch 28. Oktober 2009, 12:09

danke :D
jaa ich weiß das das mit den kommentaren nicht gerade sinnvoll ist...hab ich aber oben auch geschrieben^^...abgetippt aus dem buch der vollständigkeit halber nachdem ichs nicht hinbekommen hab...:)
Erfolg im Leben ist eine Sache, die weniger mit Talent und Gelegenheit zu tun
hat, als mit Konzentration und Beharrlichkeit.
—C. W. Wendte
Antworten