[Python] zipper plusieurs fichiers

Résolu
Je souhaiterais zipper tous les fichiers "*-20070202.log"
d'une certaine racine dans un fichier "20070202.zip" a ce meme endroit

1 - j'ai essaye :

import zipfile

chemin = "C:\\bidon\\20070202.zip"

import zipfile
f=zipfile.ZipFile(chemin,'w',zipfile.ZIP_DEFLATED)
f.write('aaaaaaaa-20070202.log')
f.close()

=> ca a marche (zip cree et fichier vise ajoute)

2 - mais pour :

chemin = "C:\\bidon\\20070202.zip"

import zipfile
f=zipfile.ZipFile(chemin,'a',zipfile.ZIP_DEFLATED)
f.write('b-20070202.log')
f.close()

=> 2eme fichier pas ajoute au zip deja existant ...

3 - je souhaiterais generaliser ca a toute une plage de fichiers ...

MERCI d'avance !
Configuration: Windows XP
Firefox 1.5.0.9

3 réponses

  1. ----- reponse partielle -----

    import zipfile

    chemin = "C:\\bidon\\20070202.zip"

    import zipfile
    f=zipfile.ZipFile(chemin,'w',zipfile.ZIP_DEFLATED)
    f.write("C:\\bidon\\aaaaaaaa-20070202.log")
    f.close()

    f=zipfile.ZipFile(chemin,'a',zipfile.ZIP_DEFLATED)
    f.write("C:\\bidon\\b-20070202.log")
    f.close()

    f = zipfile.ZipFile(chemin,'a',zipfile.ZIP_DEFLATED)
    f.write("C:\\bidon\\c-20070202.log")
    f.close()

    f = zipfile.ZipFile(chemin,'a',zipfile.ZIP_DEFLATED)
    f.write("C:\\bidon\\d-20070202.log")
    f.close()

    f = zipfile.ZipFile(chemin,'a',zipfile.ZIP_DEFLATED)
    f.write("C:\\bidon\\fffffffffff-20070202.log")
    f.close()

    f = zipfile.ZipFile(chemin,'a',zipfile.ZIP_DEFLATED)
    f.write("C:\\bidon\\trztretretre-20070202.log")
    f.close()

    ===> mes 6 fichiers ont bien dedans
    mais comment faire si l'on veut eviter de "lister" tous les ajouts ... ?
    1
    1. Modérateur
      1
      1. ----- pas encore ca ... -----

        import zipfile

        chemin = "C:\\bidon\\20070202.zip"

        import zipfile
        f=zipfile.ZipFile(chemin,'w',zipfile.ZIP_DEFLATED)
        f.write("C:\\bidon\\aaaaaaaa-20070202.log")
        f.close()

        f=zipfile.ZipFile(chemin,'a',zipfile.ZIP_DEFLATED)
        f.write("C:\\bidon\\b-20070202.log")

        f.write("C:\\bidon\\c-20070202.log")

        f.write("C:\\bidon\\d-20070202.log")

        f.write("C:\\bidon\\fffffffffff-20070202.log")

        f.write("C:\\bidon\\trztretretre-20070202.log")
        f.close()

        ===> j'ai reussit a reduire le nombre de lignes de mon code
        mais pas encore a filtrer selon nom comme "*-20070202.log"

        as-tu la reponse ??? (j'ai pas trouve sur ton site)

        Merci
        0
      2. ----------------------- EUREKA !!! ---------------------------

        import zipfile

        chemin = "C:\\bidon\\20070202.zip"

        f=zipfile.ZipFile(chemin,'w',zipfile.ZIP_DEFLATED)

        import glob

        for filename in glob.glob(r"C:\\bidon\\*-20070202.log"):
        f.write(filename)

        f.close()

        ===> a force de perseverer ... on trouve la solution !
        0
    2. Modérateur
      Voilà, c'est ça ! :-)

      1