IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Prob affichage recherche avec Tkinter


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut Prob affichage recherche avec Tkinter
    Bonjour,

    j'ai mis en place un petit script qui permet de faire une recherche sur un mot dans un fichier donné.

    Il me reste deux soucis : premièrement, je voudrais pouvoir dans ma fonction parcourir prendre un dossier complet au lieu d'un seul fichier pour que ma commande puisse faire par exemple : rechercher mot dans *.*

    Mon deuxième souci est l'affichage des résultats. Par une fonction print ça fonctionne mais sur une console alors que le reste de mon script est en graphique. De plus, je cherche a afficher le numéro de ligne.

    Je fais donc appel à votre aide et vous remercie par avance.

    Steph70

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    from Tkinter import *
    import tkFileDialog
     
    # definition du fichier a traiter   
    def parcourir(): 
        folder = tkFileDialog.askopenfilename(parent=fen1,initialdir="/",title='Choisissez le fichier ') 
        global nom
        nom = folder
        fen1.bind('<Return>', lire)
     
    # définition du mot a chercher 
    def lire():
        global mot
        mot=ent1.get()
        print mot
        print nom
        search = open(nom,"r")
        for ligne in search:
            if mot in ligne:
                print ligne
        search.close()
     
    #fenêtre principale    
    fen1=Tk()
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier ou fichier', command=parcourir)
    text2.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture',command=lire)
    bou2.grid(column=0,row=2 )
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=3)
     
    #Lancement du programme
    fen1.mainloop()

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Pour les dossiers c'est .askdirectory (tkFileDialog.askdirectory). Regarde dans la doc.
    Regarde du coter d'un Checkbutton pour choisir entre .askdirectory et .askopenfilename par exemple.

    Ton def lire ne concerne qu'un fichier. Regarde du coter d'un if os.path.isdir / else os.path.isfile ou plutôt des Checkbutton pour gérer cela.

    Pour ce qui est du numéro de ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        ind = 0
        for ligne in search:
            ind += 1
            if mot in ligne:
                print ind
                print ligne
        # A toi de trouver pour mettre cela en forme.

    Pour des réponses de pros (merci à eux) regarde du coté d'une de mes discussion (C'est pas mes réponses, mais celles des vrais pros )

    Profite en pour regarder comment ouvrir ta liste en graphique.

    Bon courage.

    @+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Bonjour et merci

    J'ai du changer mon fusil d'épaule car pour lire des fichiers de type docx par exemple ma commande ne fonctionnait pas.

    j'ai donc décidé d'utiliser os.popen mais le resultat ne s'affiche pas.

    Si vous pouviez me donner un coup de main et m'indiquer ou est mon erreur,ca serait vraiment sympa.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    from Tkinter import *
    import tkFileDialog
    import os
     
    # definition du fichier a traiter   
    def parcourir(): 
        folder = tkFileDialog.askopenfilename(parent=fen1,initialdir="/",title='Choisissez le fichier ') 
        global nom
        nom = folder
        fen1.bind('<Return>', lire)
     
    def lire():
        global fichier
        fichier=ent1.get()
        print fichier
        print nom
        a=os.popen("find /I /N" +fichier+ nom)
        a.readlines()
     
    #fenêtre principale    
    fen1=Tk()
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier ou fichier', command=parcourir)
    text2.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture',command=lire)
    bou2.grid(column=0,row=2 )
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=3)
     
    #Lancement du programme
    fen1.mainloop()
    Et le rendu sur le mot toto dans le fichier Repertoire.xls

    toto
    C:/Documents and Settings/moi/Mes documents/Repertoire.xls
    Les variables sont bien affichées mais pas resultat de la recherche. Evidemment, ce mot est bien dans le fichier

    Merci par avance
    Steph70

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Bon, j'ai avancé un peu.

    j'ai modifier un peu mon script et cette fois la variable récupérer s'affiche.

    Néanmoins, j'ai encore un souci. Lorsque je passe ma commande sur un fichier txt ca fonctionne sans difficulté mais si c'est un fichier doc ou xls, elle me renvoie du vide comme ceci :

    joly #Qui correspond à la variable nom
    C:/Documents and Settings/moi/Mes documents/Sauvegarde_cobian.xls # qui correspond à la variable route
    [] # qui correspond au résultat de la commande
    Alors que sur un fichier texte, ceci me renvoie cela :

    coucou
    C:/test.txt
    ['\n', '---------- C:/TEST.TXT\n', '[1]coucou\n', '[4]coucou\n', '[7]coucou\n', '[10]coucou\n']
    Le problème est que si j'utilise la commande dos à partir de dos et non pas de python elle me renvoie ce qu'il faut que ce soit a partir d'un fichier xls, doc ou autres.

    La je suis un peu perdu.

    Merci d'avance pour votre aide
    Steph70

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    from Tkinter import *
    import tkFileDialog
    import os
     
    # definition du fichier a traiter   
    def parcourir(): 
        folder = tkFileDialog.askopenfilename(parent=fen1,initialdir="/",title='Choisissez le fichier ') 
        global route
        route = folder
        fen1.bind('<Return>', lire)
     
    def lire():
        global nom
        nom=ent1.get()
        print nom
        print route
        a=os.popen("find /I /N \""+ nom +"\" "+ route)
        b=a.readlines()
        print b
     
    #fenêtre principale    
    fen1=Tk()
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier ou fichier', command=parcourir)
    text2.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture',command=lire)
    bou2.grid(column=0,row=2 )
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=3)
     
    #Lancement du programme
    fen1.mainloop()

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Un petit up.

    Pas d'idée ?

    Voici le nouveau script un peu plus complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    from Tkinter import *
    import tkFileDialog
    import os
    from ScrolledText import *
     
    # definition du fichier a traiter   
    def parcourir(): 
        folder = tkFileDialog.askopenfilename(parent=fen1,initialdir="/",title='Choisissez le fichier ') 
        global nom
        nom = folder
        fen1.bind('<Return>', lire)
     
    def lire():
        global fichier
        fichier=ent1.get()
        #print fichier
        #print nom
        a=os.popen("find /I /N \""+ fichier +"\" "+ nom)
        b=a.read()
        a.close()
        print b
        texte = ScrolledText(fen1, width = 75, height = 35, font = "Arial 10",
        relief = "groove")
        texte.pack()
        #Ecriture des données
        texte.config(state = NORMAL)    #Permettre l'écriture
        texte.insert("1.0", b)          #Gestion de l'insertin des lignes
                                            #1 = 1ere ligne  0 = 1er caractere de la ligne
        texte.config(state = DISABLED)  #Interdire les modifications
        bou1=Button(fen1, text='Quitter',command=fen1.destroy)
        bou1.pack()
     
    #fenêtre principale    
    fen1=Tk()
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier ou fichier', command=parcourir)
    text2.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture',command=lire)
    bou2.grid(column=0,row=2 )
     
     
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=3)
     
    #Lancement du programme
    fen1.mainloop()
    Amicalement
    Steph70

  6. #6
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Fais démarrer/exécuter et dans la zone tape cmd puis ok.
    Dans la fenêtre tape edit C:/Documents and Settings/moi/Mes documents/Sauvegarde_cobian.xls

    Tu vas comprendre.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Bonjour PauseKawa,

    Je viens de le faire, mon fichier s'ouvre normalement, et lorsque je fais une recherche sur le mot désiré, il n'y a aucun problème.

    Je ne comprend pas ce que j'aurais dû voir.

    Peut tu m'éclairer ?

    Merci pour ton aide.
    Amicalement
    Steph70

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Re bonjour,

    J'ai encore avancé un peu et j'ai essayé d'utiliser un fichier temporaire qui contiendrait le résultat de la commande et que j'afficherais à l'ecran.

    Mais cette fois, suprise, c'est ma commande dos dans le module os.popen qui refuse de fonctionner correctement.

    Mon code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    from Tkinter import *
    import tkFileDialog
    import os
    from ScrolledText import *
     
    # definition du fichier a traiter   
    def parcourir(): 
        folder = tkFileDialog.askopenfilename(parent=fen1,initialdir="/",title='Choisissez le fichier ') 
        global nom
        nom = folder
        fen1.bind('<Return>', lire)
     
    def lire():
        global fichier
        fichier=ent1.get()
        #Chemin du fichier temporaire a lire
        che= ">c:/rep.txt"
        #mise en place de la commande find
        commande="find /I /N \""+ fichier +"\" \""+ nom+"\" "+che
        #Affichage du print dans la console pour verif de la commande
        print commande
        #execution de la commande find par le module os
        a=os.popen("commande ")
        #Ouverture du fichier pour lecture
        b=open("c:/rep.txt","r")
        #Mise en place du scrolledtext
        texte = ScrolledText(fen1, width = 75, height = 35, font = "Arial 10",
        relief = "groove")
        texte.pack()
        #Ecriture des données
        texte.config(state = NORMAL)    #Permettre l'écriture
        texte.insert("1.0", b.readlines())          #Gestion de l'insertin des lignes
                                            #1 = 1ere ligne  0 = 1er caractere de la ligne
        texte.config(state = DISABLED)  #Interdire les modifications
        b.close()
        bou1=Button(fen1, text='Quitter',command=fen1.destroy)
        bou1.pack()
     
    #fenêtre principale    
    fen1=Tk()
    fen1.title('Search Word. -V1.0 par S.Pillot')
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier ou fichier', command=parcourir)
    text2.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture',command=lire)
    bou2.grid(column=0,row=2 )
     
     
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=3)
     
    #Lancement du programme
    fen1.mainloop()
    Et le resultat dans la console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    find /I /N "coucou" "C:/test.txt" >c:/rep.txt
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Python24\lib\lib-tk\Tkinter.py", line 1345, in __call__
        return self.func(*args)
      File "C:\Documents and Settings\s.pillot\Mes documents\test2.pyw", line 25, in lire
        b=open("c:/rep.txt","r")
    IOError: [Errno 2] No such file or directory: 'c:/rep.txt'
    En première ligne, j'affiche la commande de os.popen et si je la copie directement dans une console dos, ca fonctionne sans souci.

    Si vous avez une idée du pourquoi du comment, je suis preneur

    Merci d'avance.
    Cordialement
    steph70

  9. #9
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Ce n'est pas cela ton problème ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    che= ">c:\rep.txt"
    b=open("c:\rep.txt","r")
    \ sous win
    / sous tux

    Tu a la possibilité d'utiliser os.sep dans ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    patrice@Zeus:~$ uname
    Linux
    patrice@Zeus:~$ python
    Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) 
    [GCC 4.3.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import os
    >>> print os.sep
    /
    >>>

  10. #10
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Rapidement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    from Tkinter import *
    import tkFileDialog
    import os
    from ScrolledText import *
     
    def parcourir():
        global nom
        nom = tkFileDialog.askopenfilename(parent=fen1,initialdir=os.getcwd(),title='Choisissez le fichier ') 
        fen1.bind('<Return>', lire)
     
    def lire():
     
        def RetourFen1():
            fen1.deiconify()
            fen2.destroy()
     
        fichier=ent1.get()
        fen2=Tk()
        fen2.title('Search Word. -V1.0 par S.Pillot')
        fen1.withdraw()
        che= " > /home/patrice/Bureau/rep.txt"
        commande='cat -n ' + nom + ' | grep ' + fichier + che
        a=os.popen(commande)
        texte = ScrolledText(fen2, width = 75, height = 35, font = "Arial 10", relief = "groove")
        bou1=Button(fen2, text='Quitter',command=RetourFen1)
        b=open("/home/patrice/Bureau/rep.txt","r")
        for elem in b.readlines():
            texte.insert(END, elem)
        b.close()
        texte.pack()
        bou1.pack()
     
    fen1=Tk()
    fen1.title('Search Word. -V1.0 par S.Pillot')
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier ou fichier', command=parcourir)
    text2.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture',command=lire)
    bou2.grid(column=0,row=2 )
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=3)
     
    fen1.mainloop()
    J'ai modifier le tkFileDialog pour aller plus vite au but dans mon cas.

    A toi de remplacer les lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commande='cat -n ' + nom + ' | grep ' + fichier + ' > /home/patrice/Bureau/rep.txt'
    (a remplacer par ton find)

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    b=open("/home/patrice/Bureau/rep.txt","r")
    (a remplacer par ton c:\rep.txt)

    pour que cela corresponde a ton système.

    Maintenant tu devrais plutôt utiliser stdout de subprocess plutôt qu'un fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    from Tkinter import *
    import tkFileDialog
    import os
    from ScrolledText import *
    from subprocess import Popen, PIPE
     
    def parcourir():
        global nom
        nom = tkFileDialog.askopenfilename(parent=fen1,initialdir=os.getcwd(),title='Choisissez le fichier ') 
        fen1.bind('<Return>', lire)
     
    def lire():
     
        def RetourFen1():
            fen1.deiconify()
            fen2.destroy()
     
        fichier=ent1.get()
        fen2=Tk()
        fen2.protocol("WM_DELETE_WINDOW", RetourFen1)
        fen2.title('Search Word. -V1.0 par S.Pillot')
        fen1.withdraw()
        commande='cat -n ' + nom + ' | grep ' + fichier
        b=Popen(commande, shell=True, stdout=PIPE).stdout
        texte = ScrolledText(fen2, width = 75, height = 35, font = "Arial 10", relief = "groove")
        bou1=Button(fen2, text='Quitter',command=RetourFen1)
        for elem in b:
            texte.insert(END, elem)
        b.close()
        texte.pack()
        bou1.pack()
        texte.bind('<Button-4>', lambda event: event.widget.yview_scroll(-1, UNITS))
        texte.bind('<Button-5>', lambda event: event.widget.yview_scroll(1, UNITS))
     
    fen1=Tk()
    fen1.title('Search Word. -V1.0 par S.Pillot')
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier ou fichier', command=parcourir)
    text2.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture',command=lire)
    bou2.grid(column=0,row=2 )
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=3)
     
    fen1.mainloop()
    Pour finir fait attention à l'encodage lors du texte.insert(END, elem), tu risque d'avoir des surprises.

    @+

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Bonjour et merci beaucoup,

    effectivement le problème venait bien du "c:/" que j'ai du remplacer par "c:\"

    Je suis presque au bout mais néanmoins il me reste deux soucis.

    Le premier est qu'il me faut rafraichir deux fois par le bouton lecture car sinon à la première lecture, il me lit ce qu'il y avait dans le fichier avant la commande comme si il lisait le fichier avant que la commande ait fini de s'executer.

    Ensuite, si le fichier comprend plus de quelques lignes, à l'affichage il m'affiche que les premières lignes.

    Alors je peux comprendre le premier problème car si la lecture est plus rapide que l'execution de la commande ca pourrait être logique que la réponse soit celle précédente.

    Mais pourquoi n'affiche t'il que les premières lignes d'un fichier un peu plus conséquent ?

    Dans tous les cas merci pour ton aide.

    Amicalement
    Steph70

  12. #12
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Tu en est ou de ton code ? Donne le svp.

    Citation Envoyé par steph70 Voir le message
    Le premier est qu'il me faut rafraichir deux fois par le bouton lecture car sinon à la première lecture, il me lit ce qu'il y avait dans le fichier avant la commande comme si il lisait le fichier avant que la commande ait fini de s'executer.
    D'où mon conseil pour le stdout plutôt qu'un fichier (et d'éviter un os.popen qui est 'obsolète').

    Citation Envoyé par steph70 Voir le message
    Ensuite, si le fichier comprend plus de quelques lignes, à l'affichage il m'affiche que les premières lignes.
    Donne le contenu de ton rep.txt et dit nous ou cela bloque. A mon avis (et je me trompe souvent <=== (NDTL : cela s'appelle prendre des distances pour une conn... possible)) il s'arrête sur un é à ou autre caractère qui pose un souci d'encodage pour le texte.insert.

    @+

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Re

    Alors pour le code, j'ai repris celui que tu m'as proposé en changeant la commande sous os.popen. Le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    from Tkinter import *
    import tkFileDialog
    import os
    from ScrolledText import *
     
    def parcourir():
        global nom
        nom = tkFileDialog.askopenfilename(parent=fen1,initialdir=os.getcwd(),title='Choisissez le fichier ') 
        fen1.bind('<Return>', lire)
     
    def lire():
     
        def RetourFen1():
            fen1.deiconify()
            fen2.destroy()
     
        fichier=ent1.get()
        fen2=Tk()
        fen2.title('Search Word. -V1.0 par S.Pillot')
        fen1.withdraw()
        che= " >c:\\rep.txt"
        commande="find /I /N \""+ fichier +"\" \""+ nom+"\" "+che
        a=os.popen(commande)
        texte = ScrolledText(fen2, width = 75, height = 35, font = "Arial 10", relief = "groove")
        bou1=Button(fen2, text='Quitter',command=RetourFen1)
        b=open("c:\\rep.txt","r")
        for elem in b.readlines():
            texte.insert(END, elem)
        b.close()
        texte.pack()
        bou1.pack()
     
    fen1=Tk()
    fen1.title('Search Word. -V1.0 par S.Pillot')
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier ou fichier', command=parcourir)
    text2.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture',command=lire)
    bou2.grid(column=0,row=2 )
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=3)
     
    fen1.mainloop()
    Le résultat sur le mot exemple "interval" tiré d'un fichier xls dans le rep.txt :
    ---------- C:/DOCUMENTS AND SETTINGS/S.PILLOT/MES DOCUMENTS/REPERTOIRE.XLS
    [17072]XXXXX@interval.cXXX
    [17074]XXXXXXXXX@interval.cXXX
    [17076]XXXXX@interval.cXXX
    [17078]XX@interval.cXXX
    [17080]XXXX@interval.cXXX
    [18281]XXXXXX XXXXXX INTERVAL
    [18401]XXXXX XXXXXXXXX INTERVAL/ JXXXXXXX
    [18420]AdrXXXXX XXXX:XXXXX INTERVAL, XXXXXXXX et JXXXXXX
    [18594](chez INTERVAL) B.P. XX XXXXXX XXXXX Cedex (XXX.).
    [18633]XXXXXXXXX XXXXXXXXXX INTERVAL?
    [19541]INTERVAL*:
    et le résultat dans ma fenêtre python (après réactualisation car autrement en premier lieu, il m'affiche ce que contenait avant le fichier rep.txt et plante si le fichier n'existe pas) :

    Le résultat sur le mot exemple "interval" tiré d'un fichier xls dans le rep.txt :
    ---------- C:/DOCUMENTS AND SETTINGS/S.PILLOT/MES DOCUMENTS/REPERTOIRE.XLS
    [17072]XXXXX@interval.cXXX
    [17074]XXXXXXXXX@interval.cXXX
    [17076]XXXXX@interval.cXXX
    Merci encore pour ton aide précieuse.
    Amicalement
    Steph70

    ps : j'ai essayé stdout de subprocess mais ca plantait a chaque fois. Le résultat essayé avec le script donne :
    Exception in Tkinter callback
    Traceback (most recent call last):
    File "C:\Python24\lib\lib-tk\Tkinter.py", line 1345, in __call__
    return self.func(*args)
    File "C:\Documents and Settings\s.pillot\Mes documents\Downloads\essai.py", line 24, in lire
    b=Popen(commande, shell=True, stdout=PIPE).stdout
    File "C:\Python24\lib\subprocess.py", line 533, in __init__
    (p2cread, p2cwrite,
    File "C:\Python24\lib\subprocess.py", line 593, in _get_handles
    p2cread = self._make_inheritable(p2cread)
    File "C:\Python24\lib\subprocess.py", line 634, in _make_inheritable
    DUPLICATE_SAME_ACCESS)
    TypeError: an integer is required
    [edit] J'ai mis une pause d'une 20aine de secondes avant la lecture du fichier en esperant que je lise du premier coups le fichier nouveau et non pas le résultat d'une recherche antérieure mais ca n'a rien changé

  14. #14
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Et hop, je passe en seconde :

    Pourquoi passer par un find ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    from Tkinter import *
    import tkFileDialog
    import os
    from ScrolledText import *
    from subprocess import Popen, PIPE
     
    def parcourir():
        global nom
        nom = tkFileDialog.askopenfilename(parent=fen1,initialdir=os.getcwd(),title='Choisissez le fichier ') 
        fen1.bind('<Return>', lire)
     
    def lire():
     
        def RetourFen1():
            fen1.deiconify()
            fen2.destroy()
     
        fen2=Tk()
        fen2.protocol("WM_DELETE_WINDOW", RetourFen1)
        fen2.title('Search Word. -V1.0 par S.Pillot')
        fen1.withdraw()
        texte = ScrolledText(fen2, width = 75, height = 35, font = "Arial 10", relief = "groove")
        bou1=Button(fen2, text='Quitter',command=RetourFen1)
        b=open(nom,"r")
        for elem in (ligne for ligne in b.readlines() if ent1.get() in ligne):
            texte.insert(END, elem)
        texte.pack()
        bou1.pack()
        texte.bind('<Button-4>', lambda event: event.widget.yview_scroll(-1, UNITS))
        texte.bind('<Button-5>', lambda event: event.widget.yview_scroll(1, UNITS))
     
    fen1=Tk()
    fen1.title('Search Word. -V1.0 par S.Pillot')
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier ou fichier', command=parcourir)
    text2.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture',command=lire)
    bou2.grid(column=0,row=2 )
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=3)
     
    fen1.mainloop()
    Et si tu as besoin du n° de ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
        fen2=Tk()
        fen2.protocol("WM_DELETE_WINDOW", RetourFen1)
        fen2.title('Search Word. -V1.0 par S.Pillot')
        fen1.withdraw()
        texte = ScrolledText(fen2, width = 75, height = 35, font = "Arial 10", relief = "groove")
        bou1=Button(fen2, text='Quitter',command=RetourFen1)
        b=open(nom,"r")
        ind = 0
        for ligne in b.readlines():
            ind += 1
            if ent1.get() in ligne:
                texte.insert(END, 'Ligne ' + str(ind) + ' : ' + ligne)
        texte.pack()
        bou1.pack()
        texte.bind('<Button-4>', lambda event: event.widget.yview_scroll(-1, UNITS))
        texte.bind('<Button-5>', lambda event: event.widget.yview_scroll(1, UNITS))
    @+

    Ps : Pense quand même à Subprocess la prochaine fois. Ton erreur viens sans doute du commande= qui est mal formatée.

  15. #15
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    J'allais oublier : pour ce qui est du popen (et Popen) place un os.waitpid (ou os.wait) juste après pour attendre la fin de ta commande.

    @+

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Hello et merci encore

    Ton aide m'est vraiment précieuse.

    Ton script fonctionne bien mais néanmoins, je retombe dans mon problème de base qui est que ca ne lit que les fichiers .txt.

    En effet avec la commande find, j'arrive à lire les fichiers doc ou xls et la ca pêche, c'est comme si ca ne les lisait pas.

    Je n'ai pas de message d'erreur, mais juste une réponse vide.

    Une idée ?

    Amicalement
    Steph70

  17. #17
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Peut être (pas de poste Windows sous la main...) ... Le /I du find ?

    rajoute un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from string import lower
    Puis fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        for elem in (ligne for ligne in b.readlines() if ent1.get().lower in ligne.lower()):
    ou suivant ton choix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        for ligne in b.readlines():
            ind += 1
            if ent1.get().lower in ligne.lower():
                texte.insert(END, 'Ligne ' + str(ind) + ' : ' + ligne)
    Sinon print est ton ami :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for elem in (ligne for ligne in b.readlines() if ent1.get().lower in ligne.lower()):
        print elem
    print 'fin de traitement'
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for ligne in b.readlines():
        ind += 1
        print 'lecture ligne : ' + ind
        if ent1.get().lower in ligne.lower():
            print 'occurrence trouvée ligne : ' + ind
            texte.insert(END, 'Ligne ' + str(ind) + ' : ' + ligne)
    print 'fin de traitement'
    @+

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Rebonjour,

    Le problème venait a priori du fichier sur lequel j'effectuais mon test.

    Merci à tous pour votre aide précieuse et je déclare résolu ce post.

    Je vous transmet le code final auquel j'ai rajouté une recherche par dossier.

    Amicalement
    Steph70

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    from Tkinter import *
    import tkFileDialog
    import os
    from ScrolledText import *
     
    def parcourir():
        global nom
        nom1 = tkFileDialog.askdirectory(parent=fen1,initialdir=os.getcwd(),title='Choisissez le fichier ')
        nom=nom1.replace('/','\\')
        fen1.bind('<Return>', lire)  
     
    def lire():
     
        def RetourFen1():
            fen1.deiconify()
            fen2.destroy()
     
        fichier=ent1.get()
        fen2=Tk()
        fen2.title('Search Word. -V1.0 par S.Pillot')
        fen1.withdraw()
        che= " >rep.txt"
        commande="find /I /N \""+ fichier +"\" \""+ nom+"\\*.*\" "+che
        #print commande
        a=os.system(commande)
        ent1.delete(0,END)
        texte = ScrolledText(fen2, width = 75, height = 35, font = "Arial 10", relief = "groove")
        bou1=Button(fen2, text='Quitter',command=RetourFen1)
        b=open("rep.txt","r")
        for elem in b.readlines():
            texte.insert(END, elem)
        b.close()
        os.system("del /Q rep.txt")
        texte.pack()
        bou1.pack()
     
     
    def parcourir1():
        global nom
        nom = tkFileDialog.askopenfilename(parent=fen1,initialdir=os.getcwd(),title='Choisissez le fichier ') 
        fen1.bind('<Return>', lire1)
     
    def lire1():
     
        def RetourFen1():
            fen1.deiconify()
            fen2.destroy()
     
        fichier=ent1.get()
        fen2=Tk()
        fen2.title('Search Word. -V1.0 par S.Pillot')
        fen1.withdraw()
        che= " >rep.txt"
        commande="find /I /N \""+ fichier +"\" \""+ nom+"\" "+che
        a=os.system(commande)
        ent1.delete(0,END)
        texte = ScrolledText(fen2, width = 75, height = 35, font = "Arial 10", relief = "groove")
        bou1=Button(fen2, text='Quitter',command=RetourFen1)
        b=open("rep.txt","r")
        for elem in b.readlines():
            texte.insert(END, elem)
        b.close()
        os.system("del /Q rep.txt")
        texte.pack()
        bou1.pack()
     
    fen1=Tk()
    fen1.title('Search Word. -V1.0 par S.Pillot')
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier', command=parcourir)
    text2.grid(column=2,row=1)
    text3=Button(fen1, text='Choisisser le fichier ', command=parcourir1)
    text3.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture Dossier',command=lire)
    bou2.grid(column=3,row=1 )
    bou3=Button(fen1,text='Lecture Fichier ',command=lire1)
    bou3.grid(column=3,row=0 )
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=5)
     
    fen1.mainloop()

  19. #19
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    from Tkinter import *
    import tkFileDialog
    import os
    from ScrolledText import *
     
    def parcourir(source):
        global nom
        if source == 0:
            nom = tkFileDialog.askdirectory(parent=fen1,initialdir=os.getcwd(),title='Choisissez le dossier')
            nom = nom.replace('/','\\')
        elif source == 1:
            nom = tkFileDialog.askopenfilename(parent=fen1,initialdir=os.getcwd(),title='Choisissez le fichier')
        fen1.bind('<Return>', lambda : lire(source))  
     
    def lire(source):
     
        def RetourFen():
            fen1.deiconify()
            fen2.destroy()
     
        fichier=ent1.get()
        fen2=Tk()
        fen2.title('Search Word. -V1.0 par S.Pillot')
        fen1.withdraw()
        che= " >rep.txt"
        if source == 0:
            commande="find /I /N \""+ fichier +"\" \""+ nom+"\\*.*\" "+che
        elif source == 1:
            commande="find /I /N \""+ fichier +"\" \""+ nom+"\" "+che
        #print commande
        a=os.system(commande)
        ent1.delete(0,END)
        texte = ScrolledText(fen2, width = 75, height = 35, font = "Arial 10", relief = "groove")
        bou1=Button(fen2, text='Quitter',command=RetourFen)
        b=open("rep.txt","r")
        for elem in b.readlines():
            texte.insert(END, elem)
        b.close()
        os.remove(rep.txt)
        texte.pack()
        bou1.pack()
     
    fen1=Tk()
    fen1.title('Search Word. -V1.0 par S.Pillot')
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier', command= lambda : parcourir(0))
    text2.grid(column=2,row=1)
    text3=Button(fen1, text='Choisisser le fichier ', command= lambda : parcourir(1))
    text3.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture Dossier',command=lambda : lire(0))
    bou2.grid(column=3,row=1 )
    bou3=Button(fen1,text='Lecture Fichier ',command= lambda : lire(1))
    bou3.grid(column=3,row=0 )
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=5)
     
    fen1.mainloop()
    @+

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    C'est vrai que comme cela, c'est plus optimisé.

    Merci encore PauseKawa.

    Juste le os.remove(rep.txt) qui dysfonctionne mais en le remplacant par un os.system("del /Q rep.txt"), c'est au poil.

    Merci encore
    Amicalement

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Défaut dans (moteur de recherche avec affichage par page)!
    Par booraq dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 13/12/2013, 13h10
  2. [XL-2007] affichage message avec fct recherche
    Par toushusss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/08/2011, 14h32
  3. Problème d'affichage recherche avec checkbox
    Par Atchoum89 dans le forum Langage
    Réponses: 12
    Dernier message: 26/07/2011, 12h27
  4. Réponses: 3
    Dernier message: 05/12/2007, 23h19
  5. Réponses: 2
    Dernier message: 27/05/2007, 03h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo