IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Fichier vide lors de l'ajout au ZipFile


Sujet :

Python

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Par défaut Fichier vide lors de l'ajout au ZipFile
    Bonjour,
    j'ai fait une fonction pour ajouter un fichier .txt a mon zip mais quand j'ouvre l'archive, le fichier README.txt est vide, 0kb... Comment ça se fait s'il vous plait ? Merci

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    def generateData(file, win):
        with zipfile.ZipFile(file) as zf:
            #Creer archive de data
            with zipfile.ZipFile(file.split('.')[0]+'_data.zip', mode='w') as zfnew:
                with open('README.txt', mode='a+') as readme:
                    readme.write('This zip has been generated on {DATE}')
                    zfnew.write(os.path.basename(readme.name))
                os.remove('README.txt')
            for filename in zf.namelist():
                if not os.path.isdir(filename):
                    newName = filename.split('.')[0]+'_data.'+filename.split('.')[-1]
                    #pour chaque fichier on va passer les fonctions de data
                    #.....
                    newFile = open(newName, mode='w+')
                    zfnew = zipfile.ZipFile(str(file.split('.')[0])+'_data.zip', mode='a')
                    try:
                        zfnew.write(os.path.basename(newFile.name))    
                    finally:
                        newFile.close()
                        zfnew.close()
                    os.remove(os.path.basename(newFile.name))
        lb = ttk.Label(win, width=300, text="Your zip of data has been generated", anchor="center")
        lb.pack()

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 988
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 988
    Par défaut
    Est-ce que ce que vous écrivez fait plus d'1 kb ? Je ne pense pas...

    Entre parenthèses, votre code fait à peu près cette taille

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Est-ce que ce que vous écrivez fait plus d'1 kb ? Je ne pense pas...

    Entre parenthèses, votre code fait à peu près cette taille
    Ah oui pardon, le fait que le fichier soit totalement vide quand je l'ouvre signifie qu'il y a un problème quelque part tout de même

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 988
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 988
    Par défaut
    Si vous parlez de README.TXT, vous savez que vous avez fait une demande de suppression avec os.remove ?

    Comment apercevez-vous son contenu ?

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Par défaut
    Bah oui, je crée le Readme, j’écris dedans, je l'ajoute a l'archive et je supprime le fichier. Donc il est dans l'archive mais plus dans le répertoire courant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zfnew.write(os.path.basename(readme.name))

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 988
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 988
    Par défaut
    Est-ce que le fichier README.TXT est bien créé à l'emplacement souhaité (supprimez le et retentez afin de vérifier s'il se retrouve au même emplacement)

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Est-ce que le fichier README.TXT est bien créé à l'emplacement souhaité (supprimez le et retentez afin de vérifier s'il se retrouve au même emplacement)
    oui pourquoi ? l'emplacement souhaite c'est le répertoire courant... pourquoi ça fonctionnerait pas ?
    J'ai ça : zfnew <zipfile.ZipFile filename='example_data.zip' mode='w'>
    readme <_io.TextIOWrapper name='README.txt' mode='a+' encoding='cp1252'> README.txt donc les chemins sont en répertoire courant...

    Bon, j'ai teste en enlevant la ligne du remove, résultat j'ai bien le fichier README dans le répertorie courant et il y a le texte dedans, mais le fichier README du zip est vide...

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 988
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 988
    Par défaut
    J'ai testé chez moi, ça fonctionne très bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    from zipfile import ZipFile
     
    def make_zip(name, obj):
        """put obj in zip file named name"""
        zip = ZipFile(name, "w")
        zip.write(obj)
        zip.close()
     
    def add_text_tofile(text, filename):
        "add line in file named filename"""
        with open(filename, 'a') as f:
            f.write(text + '\n')
     
    # test
    s = "test"
    filename = "test.c"
    add_text_tofile(s, filename)
    make_zip("test.zip", filename)
    J'ai bien un zip nommé test.zip et comprenant le fichier test.c

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Par défaut
    Merci bcp, j'ai utilisé w et a a la place de w+ et a+ et ca fonctionne du coup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/06/2017, 15h47
  2. [SP-2013] Ajout d'un fichier vide
    Par P'tite_Lily dans le forum SharePoint
    Réponses: 4
    Dernier message: 19/08/2016, 11h54
  3. Cellule vide lors de la lecture d'un fichier Excel par OLEDB
    Par seb.49 dans le forum Framework .NET
    Réponses: 4
    Dernier message: 06/02/2010, 18h52
  4. Réponses: 3
    Dernier message: 12/04/2008, 12h05
  5. Réponses: 33
    Dernier message: 15/10/2004, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo