[R] Filtrer un fichier texte trés long

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

[R] Filtrer un fichier texte trés long

#1

Message par pierrotm777 »

Bonjour à tous,
J'essaie de traiter un long fichier texte du genre:
essai.txt
► Afficher le texte
J'ai essayé cela sans succés

Code : Tout sélectionner

$_TxtFilePath = @ScriptDir & "\essai.txt"
For $I = 1 To UBound ( $_TxtFilePath ) -1
    StringSplit($_TxtFilePath[$I],"/")
    StringReplace($_TxtFilePath[$I],$_TxtFilePath[$I],$_TxtFilePath[$I][1])
Next
Je voudrais que tout ce qui se trouve après les / soient effacés y compris les / .

Merci de votre aide
Modifié en dernier par pierrotm777 le mar. 23 nov. 2010 19:12, modifié 1 fois.
Avatar du membre
mimione
Niveau 4
Niveau 4
Messages : 91
Enregistré le : mer. 30 avr. 2008 18:11
Localisation : Bretagne
Status : Hors ligne

Re: [..] Filtrer un fichier texte trés long

#2

Message par mimione »

Bonjour
Essayer avec "StringInStr " et "StringTrimRight ".
Le plus dur, c'est de déterminer si le premier caractère est numéroté "0" ou "1"..!
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Filtrer un fichier texte trés long

#3

Message par pop45 »

J'espere que ceci, n'est qu'une partie du script, car la vous ne risque pas de modifier le contenue du fichier...

Code : Tout sélectionner

#include <File.au3>

$Path = @ScriptDir & "\essai.txt"
$File = FileOpen ("essai.txt")
For $i = 1 To _FileCountLines ($Path)
    $line = FileReadLine ($File,$i)
    $rep = StringSplit ($line,"/")
    _FileWriteToLine ($Path,$i,$rep[1],1)
Next

 
Tentez avec ce code
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Filtrer un fichier texte trés long

#4

Message par Tlem »

Utilisez StringRegExpReplace avec le pattern (/.*)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Filtrer un fichier texte trés long

#5

Message par pierrotm777 »

Merci , cela fonctionne à merveille
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Filtrer un fichier texte trés long

#6

Message par pierrotm777 »

Cela fonctionne trés bien,pop45, mais est terriblement long sur mon fichier de plus d'un mega .
(traitement non fini au bout de 5 heures) .
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Filtrer un fichier texte trés long

#7

Message par pierrotm777 »

Tlem,

J'ai donc testé votre solution, ainsi :

Code : Tout sélectionner

#include <File.au3>

$Path = @ScriptDir & "\dicofr2.txt"
$File = FileOpen ("dicofr2.txt")
For $i = 1 To _FileCountLines ($Path)
    $line = FileReadLine ($File,$i)
    $rep = StringRegExpReplace($line,"/.*","")
    _FileWriteToLine ($Path,$i,$rep,1)
Next

Mais cela prend aussi beaucoup de temps !
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [R] Filtrer un fichier texte trés long

#8

Message par sylvanie »

Bonsoir,

c'est en partie parce que vous travaillez ligne par ligne et que vous lancez une écriture de fichier à chaque ligne. Un peu comme si vous utilisiez un camion pour déménager, mais vous ne prenez qu'un carton par voyage.

essayez comme ceci par blocks de 500 lignes :
► Afficher le texte
mettez des timers sur les deux méthodes pour mesurer la différence.

[edit] : au fait q'appelez vous "gros" ? Si le fichier ne dépasse pas 50Mo par exple, ne bouclez plus et faites un seule fileread ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Filtrer un fichier texte trés long

#9

Message par pierrotm777 »

sylvanie,
je n'ai même pas vu se passer le traitement tellement il a été rapide.

Merci beaucoup de votre aide
Répondre