Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création d'une archive ZIP avec zipfile !

    15 octobre 2010 à 18:14:41

    Bonsoir !

    Donc voilà je voulais demander si il était possible de créer une fonction prenant comme argument un nom de fichier et un nom d'archive, par exemple :

    test.py

    ArchiveTest.zip

    Dont l'arborescence de l'archive serait scripts/utilities/test.py (donc un fichier dans un dossier dans un autre dossier dans une archive).


    Merci d'avance,

    FMIS@Menace.
    • Partager sur Facebook
    • Partager sur Twitter
      15 octobre 2010 à 21:03:41

      Il y a le module Python « zipfile » pour ça. Tu peux aller lire la doc, il suffit de l'extraire dans un dossier temporaire après (comme /tmp sous linux), puis de jouer avec les syspath et __import__.

      Bonne chance. :)
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        16 octobre 2010 à 10:37:41

        Tu t'en es sorti :) ?
        • Partager sur Facebook
        • Partager sur Twitter
          16 octobre 2010 à 11:08:14

          Pas tellement, je me suis embrouillé avec la création|suppresion des répertoires, la compilation etc alors j'ai laissé tomber x)
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            16 octobre 2010 à 11:31:38

            Dommage, faut pas abandonner, tu aurais dû présenter ton code, on aurait pu t'aider.

            C'est pas le module zipfile qui te gênait finalement ?

            précisément ton code devait faire quoi?
            • Partager sur Facebook
            • Partager sur Twitter
              16 octobre 2010 à 11:52:15

              Voici mon code, je pense qu'il ressemble à rien étant donné que je me suis complétement embrouillé.

              #!/usr/bin/python
              
              from __future__ import with_statement
              
              import os
              import zipfile
              
              
              def createZip(fileName, archiveName):
                  filePath = os.getcwd() + os.sep + fileName
                  path1    = os.getcwd() + os.sep + fileName.split('.')[:-1][0]
                  path2    = path1 + os.sep + 'addons'
                  path3    = path2 + os.sep + 'eventscripts'
                  for path in [path1, path2, path3]:
                      os.mkdir(path)
                  with open(filePath, 'r') as fileStream:
                      with open(path3 + os.sep + fileName, 'a') as file:
                          file.write(fileStream)
                  with zipfile.ZipFile(fileName, 'w', zipfile.ZIP_DEFLATED) as zfile:
                      zfile.write(filePath)
              


              En fait, j'aimerais depuis un fichier (disons test.txt) créer une archive du nom de TestArchive.zip avec l'arborescence addons/eventscripts/test.txt et supprimer les éventuels dirs créés ...

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                16 octobre 2010 à 11:57:03

                Tu as des messages d'erreur ?

                Pour créer un répertoire dans un autre répertoire je te donne un exemple en fonction de tes données.

                import os
                
                try:
                    os.makedirs(os.path.join(os.getcwd(), "addons/eventscripts"))
                except OSError, e:
                    print e.args
                


                • Partager sur Facebook
                • Partager sur Twitter
                  16 octobre 2010 à 12:16:08

                  En modifiant un peu le code (erreurs etc) j'ai bien addons/eventscripts/test.txt qui se créé, mais pas d'archive.

                  #!/usr/bin/python
                  
                  from __future__ import with_statement
                  
                  import os
                  import zipfile
                  
                  
                  def createZip(fileName, archiveName):
                      filePath = os.getcwd() + os.sep + fileName
                      path1    = os.getcwd() + os.sep + fileName.split('.')[:-1][0]
                      path2    = path1 + os.sep + 'addons'
                      path3    = path2 + os.sep + 'eventscripts'
                      for path in [path1, path2, path3]:
                          os.mkdir(path)
                      with open(filePath, 'r') as fileStream:
                          with open(path3 + os.sep + fileName, 'a') as file:
                              for line in fileStream.readlines():
                                  file.write(line) 
                      zfile = zipfile.ZipFile(fileName, 'w', zipfile.ZIP_DEFLATED)
                      zfile.write(filePath)
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    16 octobre 2010 à 12:32:31

                    import os
                    
                    
                    try:
                        os.makedirs(os.path.join(os.getcwd(), "addons/eventscripts"))
                    except OSError, e:
                        print e.args
                    
                    try:
                        f=open(os.path.join("addons/eventscripts", "fichier.txt"), "w") #creation du fichier.txt vide
                        f.write("coucou") # t'écris ce que tu veux
                        f.close()
                    except IOError, e:
                        print e.args # si le fichier existe il te le dit
                    


                    Après tu modifies comme tu le souhaites pour créer ta fonction.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Création d'une archive ZIP avec zipfile !

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown