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

Programmation et administration système Perl Discussion :

Taille en fichier >2Go en perl


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 138
    Par défaut Taille en fichier >2Go en perl
    Bonjour,

    Je souhaite obtenir la taille d'un fichier en perl.

    Mon problème c'est que cette taille peut attendre 2.7 Go ou 13 Go, et il semble que cela dépasse la capacité des entiers de perl.
    La commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @infos = stat($chemin);
    $taille=$infos[7];
    print "taille=$taille\n";
    me retourne :
    taille=
    sans la taille.
    la commande -s ne marche pas plus. En fait, il semble qu'il faille passer par Math:: BigInt; , mais primo, je ne connais pas ce type.
    Deusio, comme les commandes perl ne donnent que la taille dans un entier, cela ne sert à rien de convertir un entier tronqué en BigInt.

    Est-ce qu'il y a un moyen de régler ce problème ?

    Pour info, je suis sous Linux.

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 138
    Par défaut
    J'ai trouvé un moyen de régler le problème.
    j'utilise la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    sub len_fichier
    {
    	my ($fichier) = @_;
    	my $tmp0=`ls -l $fichier`;
    	my @tab=split(/ +/, $tmp0);
    	my $res=$tab[4];
    	return $res
    }
    Cela retourne la taille en chaine de caractère. Pour moi cela me suffit, car je n'ai besoin que de savoir s'il fait plus ou moins d'1 Go, et avec la taille de la chaine j'ai l'info.
    Apres, pour l'utiliser, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $var=len_fichier("/etc/crontab");

  3. #3
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Je trouve ce souci étrange. Que donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @infos = stat($chemin) or die ("Il y a un souci $!\n");

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Par défaut
    Ca donne "Il y a un souci".
    Je reproduit aussi ce comportement, stat échoue sur des gros fichiers.
    (j'ai fait le test sur un fichier de 2Gigas).
    J'utilise Perl "version 5.005_03 for sun4-solaris"

  5. #5
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    En essayant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Carp;
     
    my $fichier = $ARGV[0];
    my @data = stat($fichier);
    print "Taille : $data[7]\n";
    J'ai testé ce code sous Debian sur un fichier de 10 Go et je n'ai pas de problème.

    Sous Windows, j'ai pas non plus eu de soucis.

    J'ai testé sous Perl 5.8.8 822 et Perl 5.10.

    Quelle version de Perl avez vous et sous quel OS ?

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

Discussions similaires

  1. [Socket][Byte] Probleme d'envoi d'une taille de fichier
    Par Erok dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 12/05/2009, 17h38
  2. perl et taille de fichier
    Par zerros dans le forum Langage
    Réponses: 1
    Dernier message: 21/12/2007, 00h31
  3. [DOS] Obtenir la taille du fichier
    Par Amélie Ladoque dans le forum Windows
    Réponses: 2
    Dernier message: 15/02/2005, 12h33
  4. Taille de fichier
    Par nicolas.pissard dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/11/2003, 16h24
  5. [langage] Problème de taille de fichier à mettre dans
    Par And_the_problem_is dans le forum Langage
    Réponses: 10
    Dernier message: 13/08/2002, 09h41

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