Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1490 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  PERL : recuperer les 250 premiers caracteres d'un fichier...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PERL : recuperer les 250 premiers caracteres d'un fichier...

n°385544
bezot3
Posté le 07-05-2003 à 10:48:53  profilanswer
 

bonjour,  
 
je dispose d'un fichier texte dont la taille peut etre tres importante (plusieurs mo).  
Je souhaite recuperer dans une variable les 250 premiers caracteres et stocker le reste du fichier  
dans un nouveau fichier. Je ne vois pas comment gerer cela en Perl, avez-vous une idée ?

mood
Publicité
Posté le 07-05-2003 à 10:48:53  profilanswer
 

n°385582
Aricoh
gentil mais fo po pousser
Posté le 07-05-2003 à 11:03:32  profilanswer
 

A tester :

Code :
  1. use strict;
  2. my $FichierBase = "oukilégroleufichier.txt";
  3. my $NbCarMAX = 250;
  4. my $Chaine = "";
  5. my $FichierNew = "toto.txt";
  6. open(BASE, "$FichierBase" ) or die("err $FichierBase : $!\n" );
  7. open(NEW, ">$FichierNew" ) or die("err $FichierNew : $!\n" );
  8. while(<BASE> ) {
  9.     if (length($Chaine < $NbCarMAX)) {
  10.         $Chaine .= $_;
  11.         while(length($Chaine > $NbCarMAX)) {
  12.             push(@_, chop($Chaine));
  13.         }
  14.         if (@_) {
  15.             @_ = reverse(@_);
  16.             foreach my $Car(@_) {
  17.                 print NEW $Car;
  18.             }
  19.         }
  20.     } else {
  21.         print NEW $_;
  22.     }
  23. }
  24. close BASE;
  25. close NEW;


 
L'ai pas testé mais bon ...
 
Je reconnais que le code est du genre tordu mais j'suis d'humeur joyeuse aujourd'hui  :D
 
Edit1 : hum, et si j'utilisais la variable que j'me suis fait suer à déclarer($NbCarMAX) mais que j'utilisais po ?  :whistle:
Edit2 : variable $i supprimée, je m'en servais po  :( Eh bezot3, t'es toujours là ? T'as confiance en moué ? [:yaisse2]


Message édité par Aricoh le 07-05-2003 à 11:20:49

---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
n°385592
bezot3
Posté le 07-05-2003 à 11:06:52  profilanswer
 

juste une question : tu te serts pas de ta variable max_nb_car qui est a 250 mais plutot de 125 !! Juste un oubli je pense ...

n°385595
Aricoh
gentil mais fo po pousser
Posté le 07-05-2003 à 11:09:12  profilanswer
 

bezot3 a écrit :

juste une question : tu te serts pas de ta variable max_nb_car qui est a 250 mais plutot de 125 !! Juste un oubli je pense ...

merci, suis vraiment trop tordu today  :sweat:  
 
As-tu capté ce que fais mon code ?


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
n°385608
bezot3
Posté le 07-05-2003 à 11:20:55  profilanswer
 

oui a peu pres mais je pensais a un truc plus simple :
 
je copie le fichier source en fichier cible, ensuite je supprime les 250 premiers caracteres dans le fichier cible. Mais la question est comment supprimer ces 250 premiers caracteres. sinon, je vais m'orienter vers ta solution meme si elle me fait peur pour de gros fichiers.

n°385779
arghbis
salops de dauphins
Posté le 07-05-2003 à 13:08:37  profilanswer
 

ben avec un substr tiens!

Code :
  1. open (R, "tongrosfichier" );
  2. while (<R> )
  3. {
  4. chomp;
  5. $lignes .=$_;
  6. }
  7. $jegardesles250premierscaracteres = substr($lignes, 0, 250);
  8. $jegardeslafindugrosfichier = substr($lignes, 250, length($lignes));
  9. open (W, "restedugrofichier" );
  10. print W $jegardeslafindugrosfichier;
  11. [code]
  12. sinon, à la place de substr tu peux faire :
  13. [code]
  14. $i =length($ligne);
  15. $j = $i;
  16. while ($i > $j -250)
  17. {
  18. unshift (@tab, chop($lignes));
  19. }
  20. print W join ("", @tab);


 
et voilà
 
--edit--  
la première est plus performante


Message édité par arghbis le 07-05-2003 à 13:09:19
n°385797
Aricoh
gentil mais fo po pousser
Posté le 07-05-2003 à 13:21:34  profilanswer
 

2 remarques pour ton code, arghbis :
 
1 - tu utilises chomp(), ce qui vire le retour chariot ("\n" ) mais lorsque tu print les lignes dans le second fichier, y a pas de "\n", le fichier risque de contenir au final 1 seule ligne.
 
2 - tu charges l'ensemble du fichier en mémoire, ce qui risque de pas être génial car le fichier peut être très volumineux


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
n°385830
arghbis
salops de dauphins
Posté le 07-05-2003 à 13:38:49  profilanswer
 

et??
 
est-ce un problème d'avoir tout sur une seule ligne? il n'a pas précisé
 
pour le deuxième, effectivement, je charges tout en mémoire. il y a moyen de ne pas le faire.
je proposais pas une soluce de remplacement à la tienne, juste pour indiquer qu'on peut faire la chose de manière différente après faut faire des choix.
 
bon par contre, je vois pas pq il veut pas utiliser ton code!!

n°385834
Aricoh
gentil mais fo po pousser
Posté le 07-05-2003 à 13:42:00  profilanswer
 

arghbis a écrit :

et??
est-ce un problème d'avoir tout sur une seule ligne? il n'a pas précisé


Oui mais au cas où il souhaite récupérer un second fichier n'étant qu'une copie tronquée du premier, mieux vaut éviter le chomp() dans ce cas.
 

arghbis a écrit :

je proposais pas une soluce de remplacement à la tienne, juste pour indiquer qu'on peut faire la chose de manière différente après faut faire des choix.

TIMTOWTDI !  :D
 

arghbis a écrit :

bon par contre, je vois pas pq il veut pas utiliser ton code!!


Il doit avoir peur que ça casse tout sur sa bécane  :lol:  
Ceci dit, j'ai tapé mais pas testé, si ça se trouve ça compile même pas, mon truc  :)


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
n°386120
arghbis
salops de dauphins
Posté le 07-05-2003 à 15:48:32  profilanswer
 

ben ça c évident que ça compile pas ton code, t'as deux ou trois erreurs de syntaxes, mais c pas le pb!
si je te donne un bout de code, je pense que t'es assez qualifié pour voir si y'a des erreurs et les corriger non??
 
sinon, faut pas utiliser un code quand on sait pas ce qu'il fait, c le meilleur moyen de tout planter!
 
Ps : c koi ton TIMTOW.... ???

mood
Publicité
Posté le 07-05-2003 à 15:48:32  profilanswer
 

n°386134
Aricoh
gentil mais fo po pousser
Posté le 07-05-2003 à 15:52:39  profilanswer
 

arghbis a écrit :

ben ça c évident que ça compile pas ton code, t'as deux ou trois erreurs de syntaxes, mais c pas le pb!
si je te donne un bout de code, je pense que t'es assez qualifié pour voir si y'a des erreurs et les corriger non??
 
sinon, faut pas utiliser un code quand on sait pas ce qu'il fait, c le meilleur moyen de tout planter!
 
Ps : c koi ton TIMTOW.... ???

Soit pas agressif, c'est pas bon pour la santé :D  
 
TIMTOWTDI = There Is More Than One Way To Do It


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
n°386164
arghbis
salops de dauphins
Posté le 07-05-2003 à 16:04:41  profilanswer
 

bah chuis pas agressif, désolé du malentendu!!  :hello:  
 
ben maintenant, je serais moins con, j'ai appris  
TIMTOWTDI :whistle:

n°386888
Aricoh
gentil mais fo po pousser
Posté le 08-05-2003 à 11:19:31  profilanswer
 

arghbis a écrit :

bah chuis pas agressif, désolé du malentendu!!  :hello:  
 
ben maintenant, je serais moins con, j'ai appris  
TIMTOWTDI :whistle:  

Les anglais Perlistes prononcent "Tim Toady", c'est po moi qui le dis, c'est écrit dans le Camel Book ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  PERL : recuperer les 250 premiers caracteres d'un fichier...

 

Sujets relatifs
Commet savoir si le pointeur de fichier se trouve sur une ligne vide ?[C++ et MFC] fichier ini
Recuperer l'url de la page qui va etre ouverte ?[PHP] Distinguer un réperoire d'un fichier sans extension
[BATCH] Fichier initialisation ?[JAVA] Ecrire a la fin d'un fichier
[PHP] Rechercher dans un fichier .doc[C] j'ai un probleme pour écrire dans un fichier
[PERL] executer une commande (facile)... [resolu]ecrire et lire dans un fichier en visual basic 6 ?
Plus de sujets relatifs à : PERL : recuperer les 250 premiers caracteres d'un fichier...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR