[..] Parcourir un fichier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
rocokoco2
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 20 janv. 2012 13:32
Status : Hors ligne

[..] Parcourir un fichier

#1

Message par rocokoco2 »

Bonjour je débutes en Programmation et aussi en AutoIT ..
J'ai du mal a crées un script qui a pour fonctionnalitée :

-dans un fichier .txt, ou sur chaque ligne est ecrit un mot (ex : rideau, fenetre, ect ..)

Et faire une boucle pour chaque ligne de se fichier jaimerais les insérer dans un espaces de textes..
Merci de vos aides je pense que ce ne soit pas trop dur ..
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [...]Parcourir un fichier

#2

Message par silvere »

J'ai pas tout compris, tu peut être plus clair ?
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
rocokoco2
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 20 janv. 2012 13:32
Status : Hors ligne

Re: [...]Parcourir un fichier

#3

Message par rocokoco2 »

Désolé.
En gros j'ai un fichier liste.txt ayant dedans des noms d'imprimantes sur chaque ligne comme ceci:

Code : Tout sélectionner

IR43550L
IR4353350L
IR435554350L
IR4355432450L
...
 
Et je souhaite faire une boucle :
Pour chaque Ligne de se fichier copier la ligne (ex:IR42550L) puis le coller dans un endroit .
merci
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [...]Parcourir un fichier

#4

Message par silvere »

Après avoir lu la ligne je sais pas ce que tu veut en faire alors j'ai fait sa :
► Afficher le texte
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
rocokoco2
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 20 janv. 2012 13:32
Status : Hors ligne

Re: [...]Parcourir un fichier

#5

Message par rocokoco2 »

Je travails sur Citrix c'est un peu compliquer a expliquer on va dire comme cela..
Merci en tout cas de ton aide.
En gros je voulais copier "IR43550L" et le coller dans un fichier vierge c'est pas exactement cela mais voila.
Christophe
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [...]Parcourir un fichier

#6

Message par silvere »

Il lit la première ligne du texte voulu est le réécrit sur le fichier teste.txt sur le bureau
► Afficher le texte
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
rocokoco2
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 20 janv. 2012 13:32
Status : Hors ligne

Re: [R]Parcourir un fichier

#7

Message par rocokoco2 »

Merci Beaucoup !!
rocokoco2
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 20 janv. 2012 13:32
Status : Hors ligne

Re: [...]Parcourir un fichier

#8

Message par rocokoco2 »

Enfaite désolé je voudrais un petit truc en plus :S que je n'arrives pas ..
Sur votre 2 eme script vous prenez la premiere ligne mais je voudrais quil le face a la suite c'est a dire :
séléctionnez première ligne du texte voulu et le réécrit sur le fichier teste .txt sur le bureau comme vous lavez fais, puis faire des manip avec (pas en prendre en compte) et que ensuite je veuilles prendre la 2 eme ligne et que jécrase le fichier enregistrer pour quil y es que la 2 eme ligne dans le fichier et ainsi de suite ..
Christophe
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [...]Parcourir un fichier

#9

Message par silvere »

► Afficher le texte
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Parcourir un fichier

#10

Message par Tlem »

Vue la tête de votre fichier, il vaudrait sans doute mieux le mettre directement en tableau :

Code : Tout sélectionner

#include <File.au3>

Local $aListPrn
_FileReadToArray("MonFichier.txt", $aListPrn)
Ensuite, une simple lecture en boucle du tableau vous permettra de faire ce que vous voulez avec les données qu'il contient :

Code : Tout sélectionner

For $x = 1 To $aListPrn[0]
    MsgBox(0, 'Ligne ' & $x, $aListPrn[$x])
Next
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é".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Parcourir un fichier

#11

Message par mikell »

Vu la simplicité du cahier des charges les fonctions File de base pourraient suffire

Code : Tout sélectionner

$file = FileOpen("liste.txt", 0)
While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $test = FileOpen("test.txt", 2)
    FileWrite ($test, $line)   [color=#008000] ; écrit dans test.txt en écrasant le contenu précédent[/color]
    FileClose($test)
    MsgBox(0, "", "la ligne actuellement dans le fichier test.txt est " & $line)
    [color=#008000]; ici les manips à faire sur la ligne en cours[/color]
Wend
FileClose($file)
Mais quel intérêt de passer par un 2ème fichier texte ?
" 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
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Parcourir un fichier

#12

Message par Tlem »

Personnellement, je pense que c'est la première étape. Les données devront sans doute être manipulées dans un deuxième temps. C'est pour cela que le passage par un tableau devrait simplifier le nombre d'opération à effectuer.

Après, on peut chercher à se passer des includes, mais des fois, il vaut mieux faire simple car tout le monde ne maitrise pas. :mrgreen:
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é".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Parcourir un fichier

#13

Message par mikell »

Oui en fait ces 2 scripts illustrent 2 manières possibles :
- à la volée avec les fonctions File, si à la place de la Msgbox il met une Func de traitement, c'est bon si ce traitement est le seul à faire dans le script, sans besoin d'archivage des données de départ (ya déjà le fichier liste.txt)
- avec le tableau, si le traitement doit être complexe et/ou en plusieurs étapes, là évidemment c'est meilleur, c'est plus 'autoit' : on charge les données d'abord, on les traite ensuite
Comme dans le 1er post ya "je débute", peut-être qu'un script facilement compréhensible à la lecture et sans les 'raccourcis' que représentent les includes passerait mieux (?) :wink:
Pour le cahier des charges tel que présenté on peut faire les 2
séléctionnez première ligne du texte voulu et le réécrit sur le fichier teste .txt sur le bureau (...), puis faire des manip avec (...) ensuite prendre la 2 eme ligne et que jécrase le fichier enregistrer pour quil y es que la 2 eme ligne dans le fichier et ainsi de suite ..
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
rocokoco2
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 20 janv. 2012 13:32
Status : Hors ligne

Re: [..] Parcourir un fichier

#14

Message par rocokoco2 »

merci de vos aides !.
Mais je n'arrives pas a briocoler vos scripts :S
Encore plus simple je voudrais juste :

Pour chaque ligne du fichier liste.txt, couper la ligne (copier ou je veux) ainsi de suite ..
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Parcourir un fichier

#15

Message par TopXm »

Hello :)
rocokoco2 a écrit :Pour chaque ligne du fichier liste.txt, couper la ligne (copier ou je veux) ainsi de suite ..
L'important est de savoir où tu vas mettre la ligne lue ;)

Car si c'est dans un autre fichier un bon vieux fileCopy suffit :)

Sinon faire comme indiqué par le boss :

Code : Tout sélectionner

#include <File.au3>
#include <array.au3>

Local $aListePorn
_FileReadToArray("MonFichier.txt", $aListePorn)

For $x = 1 To $aListePrn[0]
    ConsoleWrite('Ligne ' & $x & 'value ' &  $aListePorn[$x] & " que j'en fait ce que je veux...")
    _ArrayDelete($aListePorn, $x)   ; je supprime la ligne du tableau AU BESOIN
Next
;=> mais bon au final le fichier initial est vide donc autant le supprimer ?
 
rocokoco2
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 20 janv. 2012 13:32
Status : Hors ligne

Re: [..] Parcourir un fichier

#16

Message par rocokoco2 »

Bon pour etre clair vu que je ne le suis pas depuis le debut ^^.
J'ai mon fichier liste.txt qui contiens mes noms imprimantes.
Je souhaite que mon :
Pour chaque ligne du fichier liste.txt, copier la ligne et la coller dans une fenêtre (je l'as mets en piece jointe cercle rouge) et cliquez sur ouvrir et faire dautre manip avant de passé à la ligne suivante.
merci en tout cas.
Fichiers joints
photo.zip
(58.08 Kio) Téléchargé 61 fois
rocokoco2
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 20 janv. 2012 13:32
Status : Hors ligne

[R] Parcourir un fichier

#17

Message par rocokoco2 »

J'ai résolu mon problème, en réfléchissant un peu et avec l'aides de vos scripts.
Je vous remercie tous .
Christophe
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Parcourir un fichier

#18

Message par mikell »

TopXm a écrit :L'important est de savoir où tu vas mettre la ligne lue
Car si c'est dans un autre fichier un bon vieux fileCopy suffit
... Image

Code : Tout sélectionner

Local $aListePorn
C'est un lapsus ? :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 )
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Parcourir un fichier

#19

Message par ZDS »

Bonjour,

Pour info, évite le code de TopXm :

Code : Tout sélectionner

For $x = 1 To $aListePrn[0]
    ConsoleWrite('Ligne ' & $x & 'value ' &  $aListePorn[$x] & " que j'en fait ce que je veux...")
    _ArrayDelete($aListePorn, $x)   ; je supprime la ligne du tableau AU BESOIN
Next
En balayant les indices de 1 à 10 par exemple (donc un tableau de 11 cases où la première $aListe[0] = 10), une fois arrivé à $x = 6, _arrayDelete se sera déjà exécuté 5 fois, ce qui s'ignifie que ton tableau aura 5 cases de moins, et que tes indices n'iront plus que de 1 à 5 => un appel sur $aListe[6] ne fera que planter ton code :)

Je sais que ce n'est qu'anecdotique comme bug, mais je le vois malheureusement partout (et pas qu'en AutoIt). Testez vos codes, et réfléchissez un peu avant de poster des choses erronées :s c'est un coup à embrouiller quelqu'un qui chercherait de l'aide sur un problème similaire.

Bref, voici une correction possible :

Code : Tout sélectionner

For $x = $aListe[0] To 1 ; On parcourt la liste en sens inverse pour éviter les dépassements d'indices
    ConsoleWrite('Ligne ' & $x & 'value ' &  $aListe[$x] & " que j'en fait ce que je veux...")
    _ArrayDelete($aListe, $x)   ; je supprime la ligne du tableau AU BESOIN
Next
Ou bien un traitement avant, et une destruction après :

Code : Tout sélectionner

For $x = 1 To $aListe[0]
    ConsoleWrite('Ligne ' & $x & 'value ' &  $aListe[$x] & " que j'en fait ce que je veux...")
Next
Redim aListe[1]
aListe[0] = 0
A bientôt!
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Parcourir un fichier

#20

Message par TopXm »

Hello :)
ZDS a écrit :Pour info, évite le code de TopXm :
et le pire c'est que je n'utilise pas _ArrayDelete :oops:
Du coup double blâme
Je vais tenter de faire mieux :arrow:
Répondre