Seite 1 von 1

Mit python datei in .zip kopieren.

Verfasst: Sonntag 3. Februar 2008, 17:18
von Krauzi
Hallo, ich hab ne frage:
Ist es möglich, dass man mit python in eine zipdatei was hinzufügt?
Wenn ja wie?

MfG Krauzi

Verfasst: Sonntag 3. Februar 2008, 17:57
von sma
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

Verfasst: Sonntag 3. Februar 2008, 18:03
von kryz
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')

Verfasst: Sonntag 3. Februar 2008, 20:00
von Krauzi
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.

Verfasst: Sonntag 3. Februar 2008, 21:22
von Hyperion
Ein Zeilenumbruch /n hab ich noch nie gesehen ,,, meinst Du \n?

Verfasst: Montag 4. Februar 2008, 10:14
von Masaru
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<<

Verfasst: Montag 4. Februar 2008, 18:53
von Krauzi
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.