[..] Traitement de fichiers txt

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Pyrithe
Niveau 1
Niveau 1
Messages : 12
Enregistré le : lun. 03 oct. 2011 11:35
Status : Hors ligne

[..] Traitement de fichiers txt

#1

Message par Pyrithe »

Bonjour,

Avant de me pencher plus en avant dans Autoit, j'aimerais qu'on puisse me valider (ou me déconseiller) son utilisation dans le cadre de mon besoin du moment. Je vous l'expose :

J'aimerais faire traiter, quotidiennement, une dizaine de fichiers txt afin de les "décortiquer".
Voilà la structure d'un fichier txt :
► Afficher le texte
Tout ce qui est entre les virgules peux avoir une longueur différente.
Je ne peux donc me baser uniquement sur le numéro de la ligne à traiter par rapport à une section (première ligne après ENTETE, et toutes les lignes après LIGNES), et par le nombre de virgules avant ce que je veux récupérer...

Est ce que c'est possible?
Si oui, est ce que vous pouvez m'apporter quelques pistes de départ afin que je bosse là dessus?

D'avance, je remercie ceux qui m'aideront et qui me feront avancer dans cette découverte concrète d'AutoIt. :)
Modifié en dernier par Pyrithe le lun. 05 août 2013 09:54, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Traitement de fichiers txt

#2

Message par mikell »

Prière de mettre le titre du sujet en conformité
http://www.autoitscript.fr/forum/viewto ... f=35&t=595

Sinon AutoIt va très bien pour ce genre de tâche si les fichiers ont exactement la même structure
(nombre de virgules dans chaque ligne constant d'un fichier à l'autre)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Pyrithe
Niveau 1
Niveau 1
Messages : 12
Enregistré le : lun. 03 oct. 2011 11:35
Status : Hors ligne

Re: Traitement de fichiers txt

#3

Message par Pyrithe »

mikell a écrit :Prière de mettre le titre du sujet en conformité
http://www.autoitscript.fr/forum/viewto ... f=35&t=595
Salut, désolé, j'ai effectivement zappé cette règle de ce forum.
C'est corrigé.
Sinon AutoIt va très bien pour ce genre de tâche si les fichiers ont exactement la même structure
(nombre de virgules dans chaque ligne constant d'un fichier à l'autre)
Bon, déjà ca va me permettre de bosser dessus alors.
Est ce que tu aurais une piste de départ, un tuto ou une approche d'un projet un peu similaire, histoire de voir comment on aborde ce genre de cas?
Ca m'aiderait à avancer dans la bonne direction tout de suite...
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Traitement de fichiers txt

#4

Message par jguinch »

Salut.
Il y a plusieurs façons de faire ce découpage, je te propose une méthode simple pour commencer :
- lecture du fichier dans un tableau avec _FileReadToArray()
- récupération de l'index des lignes "ENTETE" et "LIGNES" avec _ArraySearch()
- découpage des lignes avec StringSplit()
- pour les lignes qui suivent "LIGNES", faire une boucle pour découper chaque ligne

Petit exemple pour illustrer la procédure :
► Afficher le texteexemple
A toi ensuite de lire la doc et essayer de comprendre le fonctionnement de chaque fonction.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Pyrithe
Niveau 1
Niveau 1
Messages : 12
Enregistré le : lun. 03 oct. 2011 11:35
Status : Hors ligne

Re: [..] Traitement de fichiers txt

#5

Message par Pyrithe »

Merci jguinch!!
Je vais de ce pas potasser les fonctions que tu me recommande, afin de comprendre leur fonctionnement, et essayer de faire ce que j'ai besoin autour de ton exemple de code.
Une journée de débuts sur AutoIt avec le soleil!! :D
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Traitement de fichiers txt

#6

Message par mikell »

Quand même jguinch pour un débutant en autoit tu aurais pu faire plus simple :mrgreen:

Code : Tout sélectionner

#include <String.au3>

$file = FileRead("1.txt")

$entete = _StringBetween($file, "ENTETE", "PREPA")
$split = StringSplit($entete[0], ",")
$infos = $split[3] & " - " & $split[5] & @crlf & @crlf

$lignes = _StringBetween($file, "LIGNES", "")
$lines = StringRegExp($lignes[0], '(\S+)', 3)
For $i = 0 to UBound($lines)-1
   $split = StringSplit($lines[$i], ",")
   $infos &= $split[5] & " - " & $split[18] & @crlf
Next
Msgbox(64, "", $infos)
 
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Traitement de fichiers txt

#7

Message par jguinch »

@mikell : on peut toujours faire plus simple... StringRegExp() pour un débutant ??? :lol:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Traitement de fichiers txt

#8

Message par jchd »

Bah voui. Il serait plus simple et plus efficace de faire une seule regexp pour récupérer le tout.
Ca permettrait au passage de tester la motivation de l'impétrant.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Traitement de fichiers txt

#9

Message par Sea »

Au pire il peux s'aider perso j'ai découvert ce tool tout bête et ça m'aide plutôt pas mal ^^

http://www.autoitscript.com/forum/topic ... tester-v2/
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Traitement de fichiers txt

#10

Message par mikell »

Non mais là arrêtez quoi :shock:
@jguinch, les expressions régulières c'est pas Satan, ici le regex est plus que basique et avec une petite lecture du fichier d'aide on comprend de suite
@jchd, c'est pas faux mais dans ce cas il faudrait vraiment que la motivation de l'impétrant soit 'stainless steel' pour résister au regexp à utiliser ^^
@Sea, n'en rajoute pas :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre