Mit python datei in .zip kopieren.

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
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Hallo, ich hab ne frage:
Ist es möglich, dass man mit python in eine zipdatei was hinzufügt?
Wenn ja wie?

MfG Krauzi
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Schon mal in die Dokumentation geschaut? Ja, es ist möglich.

Code: Alles auswählen

import zipfile
z = zipfile.ZipFile("test.zip", "a")
z.writestr("Hallo.txt", "Hallo Welt\n")
z.close()
Stefan
kryz
User
Beiträge: 12
Registriert: Sonntag 3. Februar 2008, 16:55

du musst beim erstellen des ZipFile-objektes angeben, ob du eine neue zip-datei erstellen ('w') oder etwas an eine bestehende zip-datei anhängen willst ('a').

Code: Alles auswählen

import os, zipfile

def zip(datei, zipDatei):
    if os.path.isfile(datei):
        if os.path.isfile(zipDatei):
            zip = zipfile.ZipFile(zipDatei, 'a')
        else:
            zip = zipfile.ZipFile(zipDatei, 'w')
        zip.write(datei)
        zip.close()
    else:
        print datei, "existiert nicht."
    

zip('f:\\asdf.txt', 'f:\\zip.zip')
zip('f:\\fdsa.txt', 'f:\\zip.zip')
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Erst mal danke für eure Antworten. Klappt alles. Aber jetzt hab ich noch ein problem. Der zeilenumbruch /n wird in der txtdatei als ein komisches zeichen dargestellt. Erstes Problem. Zweites: Ich möchte das in einer .con datei abspeichern. Hier übernimmt es das /n direkt in die .con. Also kein zeilenumbruch. Wie schreibe ich in die .con einen zeilenumbruch? Wenn ich einfach ne neue zeile in der .py beginn, führt es diese überhaupt nicht aus.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ein Zeilenumbruch /n hab ich noch nie gesehen ,,, meinst Du \n?
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Problem 1:
Krauzi hat geschrieben:... Der zeilenumbruch /n wird in der txtdatei als ein komisches zeichen dargestellt. ...
Dann probier mal anstelle \n folgenden Linebreak \r\n

Du arbeitest vermutlich mit Windows und Notepad (oder einem ähnlichen Editor, der nicht in der Lage ist, Unix-Linebreaks zu erkennen und richtig zu interpretieren).

Problem 2:
Krauzi hat geschrieben: ... Ich möchte das in einer .con datei abspeichern ...
Dann tu's doch einfach ;): z.writestr("Hallo.con", "Hallo Welt\r\n)

Python und dem IO-Mechanismus ist die Dateiendung ehrlich gesagt scheiss egal ;).

>>Masaru<<
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Thx mit \r\n klappt es. Ich hab aus versehen als zeilenumbruch /n gemacht. Deshalb dachte ich, dass er das \n nicht als zeilenumbruch in der .con wiedergibt, sondern nur in der txtdatei.
Egal auf jedenfall klappt es jetzt thx.
Antworten