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

Langage Perl Discussion :

[ActivePerl 5.10.0.1002] - Archive-Zip-1.23 - Pb fichier zip toujours vide


Sujet :

Langage Perl

  1. #1
    Membre régulier Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Points : 88
    Points
    88
    Par défaut [ActivePerl 5.10.0.1002] - Archive-Zip-1.23 - Pb fichier zip toujours vide
    Hello tout le monde.

    J'ai un petit problème avec ce module.
    Il est détaillé ici : http://search.cpan.org/~adamk/Archiv...Archive/Zip.pm

    Mon problème, c'est que j'arrive à créer des fichiers zips, mais je n'arrive pas à y mettre quoi que ce soit dedans, que cela soit dossier ou fichier.

    Voilà la fonction que j'ai fait : (très basique).

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #
    # =============================================================================
    #
    # NOM
    #   compresserFichier
    #
    # SYNTAXE
    #   un argument :
    #     - $sFic : path complet du fichier a compresser
    #
    # DESCRIPTION
    #   compresse un fichier
    #
    # RETOUR
    #   0 - compression OK
    #   1 - compression KO
    #
    # ==============================================================================
    #
    sub compresserFichier
    {
      # path complet du fichier
      my ($sFic) = @_;
     
      # path complet du fichier zip
      my $sFicZip = $sFic.".zip";
     
      # Code retour de la fonction 
      my $crCompresserFichier = 0;
     
      if (! -e $sFicZip)
      {
        # Creation du fichier .zip
        my $azNewZip = Archive::Zip->new();
     
        # Ajout d'un fichier
        my $afFileAdded = $azNewZip->addFile($sFic);
     
        # Sauvegarder le zip file sur le disque
        unless ($azNewZip->writeToFileNamed($sFicZip) == AZ_OK)
        {
          $crCompresserFichier = 1;
        }
      }
     
      return $crCompresserFichier;
    }
    Mon fichier .zip est bien créé mais il est toujours vide. Du coup, j'ai plusieurs questions :
    1. Est-ce que vous voyez quelque chose d'étrange dans mon script qui ferait que la fonction ne fonctionne pas ?
    2. Comment faire pour afficher plus de log concernant une éventuelle erreur qui pourrait survenir pendant la fonction ?

    Merci d'avance.

    Cdt.

    Bahan
    Bats-toi de toutes tes forces tant que tu es en vie, et n'abandonne que quand tu es mort

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Ton script fonctionne très bien sur mon PC, peut-être est-ce un problème au niveau du passage de l'argument.

    Je l'ai un peu modifier car je trouve cela mieux ainsi, mais ton script fonctionne également sans modifications si tu lui passes bien l'extension du fichier. Ne l'aurais-tu pas oubliée? Si je ne l'indique pas, ton script me crée effectivement un fichier zippé vide.


    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
    use strict;
    use warnings;
    use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
     
     
     
    my $crCompresserFichier = compresserFichier('P:/_PC_Avant/_Eudora/Test');
    print "$crCompresserFichier\n";
     
     
    sub compresserFichier
    {
      # path complet du fichier
      my $sFic = $_[0].".txt";
     
      # path complet du fichier zip
      my $sFicZip = $_[0].".zip";
    ...

    J'ai trouvé un lien qui pourrait t'intéresser
    http://search.cpan.org/~nedkonz/Arch...ve/Zip/FAQ.pod
    -- Jasmine --

  3. #3
    Membre régulier Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    Hello !

    Merci pour ta réponse déjà.

    J'ai fait quelques tests hier :

    En mettant un path complet comme fichier à ajouter, mon script en fait va compresser toute l'architecture, mais ne pas prendre le fichier qui se situe sous cette architecture.

    Si je mets uniquement un nom de fichier sans aucun path, la fonction fonctionne sans soucis.

    Donc, j'en ai conclus que le problème vient de mon path.
    Voilà à quoi il ressemble : E:\dossier1\dossier2\dossier3\monFichier
    Aucun des noms de mes dossiers ne contient de caractères spéciaux ou d'espace.

    J'ai fait un ch'tit palliatif pour le moment, à base de getcwd et de chdir, mais bon comme je ne trouve pas ça super propre, je continue de chercher ^_^.

    Cdt.

    Bahan
    Bats-toi de toutes tes forces tant que tu es en vie, et n'abandonne que quand tu es mort

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Essaie de remplacer tes slash par des backslash
    -- Jasmine --

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Sinon quand j'utilise ce module (réguliérement) j'utilise la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $zip->addTree($repertoire,$nom_fichier);
    Je me crée un repertoire temporaire dans lequel je mets tous mes fichiers et ensuite il me le zippe sans souci.
    Mais bon, addFile devrait aussi fonctionner

Discussions similaires

  1. Archiver avec WinRar en .rar ou .zip
    Par fred65200 dans le forum Contribuez
    Réponses: 0
    Dernier message: 25/02/2009, 13h50
  2. Réponses: 8
    Dernier message: 24/11/2008, 13h29
  3. [Zip] Création d'un fichier zip avec zip.lib.php corrompue
    Par fdthierry dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 02/06/2008, 14h01
  4. Faire des disquette d'archive pour apt avec mon lecteur zip ?
    Par narmataru dans le forum Administration système
    Réponses: 4
    Dernier message: 14/01/2005, 10h06
  5. [Fichier Zip] Comment zipper un fichier
    Par caro_a dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 27/05/2004, 09h40

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