Communauté sur les Eggdrops - Community about Eggdrops
Extraction de données d'un fichier txt en TCL - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (https://forum.eggdrop.fr)
+-- Forum: Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum: Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Thread: Extraction de données d'un fichier txt en TCL (/showthread.php?tid=615)



Extraction de données d'un fichier txt en TCL - bk930 - 16/02/2010

je souhaiterai récupérer une partie d'un texte dans un fichier txt
qui se présente comme le fichier attachés (Display.txt) :

Je souhaite d'abord lire le fichier ligne par ligne et puis je souhaite afficher des informations comme :

Vlan : 1
Nombre de ports total : 20
Nombre de ports connecté : 2
Nombre de ports nonconnecté : 18
Liste de ports connectés : Gi1/0/1,Gi1/0/2
List de ports nonconnectés : Gi1/0/3,Gi1/0/4,Gi1/0/5,Gi1/0/6,Gi1/0/7,Gi1/0/8,Gi1/0/9,Gi1/0/11,Gi1/0/12,Gi1/0/13,Gi1/0/17,Gi1/0/18,Gi1/0/19,Gi1/0/20,Gi1/0/25,Gi1/0/26,Gi1/0/27,Gi1/0/28

*********

Vlan : 2
Nombre de ports total : 5
Nombre de ports connecté : 2
Nombre de ports nonconnectés : Gi1/0/10,Gi1/0/21
List de ports nonconnectés : Gi1/0/22,Gi1/0/23,Gi1/0/24

Quelqu'un a une idée pour faire ça?

Merci.


RE: Extraction de données d'un fichier txt en TCL - Merwin - 16/02/2010

Déjà, pour lire le fichier:


tcl
set fileID [open "display.txt"]
set fileData [read $fileID]
set fileLines [split $fileData "\n"]
foreach line $fileLines {
  # Ici traitement de la variable line qui contient le ligne
}


C'est un début, à toi de voir pour la suite Smile


RE: Extraction de données d'un fichier txt en TCL - flo - 08/03/2010

bonjour,

j'aimerais assigner à une variable tcl les différentes valeurs d'un fichier .txt (il y a une valeur par ligne).
Dans mes recherches je suis tombé sur ce post, j'ai repris le code proposé mais n'arrive pas à mes fins.
Je ne parviens pas à assigner à chaque variable la valeurs de la ligne du fichier.
Les seuls résultats auxquels j'arrive sont soit la dernière valeur du fichier texte dans la ou les variables avec le code suivant :


tcl
set fileID [open "config/confProg.txt"]
	set fileData [read $fileID]
	set fileLines [split $fileData "\n"]
	foreach line $fileLines {
		lappend nbVoiles $line
                etc..
	}


Soit en affichant directement fileLines ou fileData, j'ai toute les valeurs contenue dans le fichier (en ligne ou en colonne selon que je prend fileLine ou fileData)

Pourrait-on m'indiquer le moyen "d'isoler" chaque ligne du fichier .txt svp ?

Merci


RE: Extraction de données d'un fichier txt en TCL - Merwin - 08/03/2010

Dans ta boucle foreach, $line contient la ligne que tu traites actuellement.


RE: Extraction de données d'un fichier txt en TCL - flo - 08/03/2010

En fait j'ai trouvé une autre solution, je récupère la valeur qui m'intéresse avec la fonction lindex

tcl
set ::nbVoiles [lindex $fileLines 0]

Mais dans le cadre de la structure que tu proposes, je vois pas trop comment faudrait faire (c'est pas pure curiosité la vu que j'ai résolu mon pb), peut-être quelque chose comme :
tcl
if $line == i set nbVoiles $line

dans la boucle foreach ? (ou i est la ligne qui m'intéresse)


RE: Extraction de données d'un fichier txt en TCL - Merwin - 08/03/2010

En effet, c'est une idée. Mais utiliser lindex est la meilleure solution, puisqu'elle t'évite de parcourir toute la liste. Je n'avais pas compris que tu ne voulais lire qu'une seule ligne. T'as trouvé la solution tout seul!

Afin d'éviter tout problème, je t'invite à prendre une bonne habitude qui consiste à vérifier que la ligne numero X existe bien:


tcl
if {[llength $filesLines] < X} {
    putlog "Error: WTF! Impossible de récupérer la ligne X puisque le fichier ne contient pas X lignes !"
    return
}


Ou plis simplement:


tcl
if {[lindex $filesLines X] == ""} {
    ...
}




RE: Extraction de données d'un fichier txt en TCL - flo - 08/03/2010

Euh non en fait je lis chaque ligne, donc je répète 8 fois la commande lindex avec une valeur différente à chaque fois (mon fichier texte comporte 8 valeurs) que j'assigne à une variable différente à chaque fois.

Merci pour le conseil pour la vérification de la "taille" du fichier lu.


RE: Extraction de données d'un fichier txt en TCL - Merwin - 08/03/2010

Dans ce cas tu devrais jeter un coup d'oeil à la command lassign. Uniquement pour Tcl 8.5, mais tu peux écrire une version pour Tcl 8.4 facilement.


tcl
lassign $fileLines ligne_1 ligne2 ligne_3 ...




RE: Extraction de données d'un fichier txt en TCL - flo - 08/03/2010

C'est exactement ce qu'il me fallait :)

Merci


RE: Extraction de données d'un fichier txt en TCL - ramiro.trad - 12/03/2012

on peut integrer ce code en php ?