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

Python Discussion :

Tchat Python - stockage des messages


Sujet :

Python

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable des études
    Inscrit en
    Août 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2022
    Messages : 7
    Par défaut Tchat Python - stockage des messages
    Bonjour,
    Je cogite sur un service de tchat pour une assoc, j'ai choisi Simplechat https://github.com/KetanSingh11/SimpleChatApp , et comme je ne suis pas très bon en Python, je bloque sur le moment où je voudrais stocker les messages échangés sur le Tchat, dans un ficher txt

    Le code du script :

    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
     
     
    """ Script for Tkinter GUI chat client. """
    # Based on https://github.com/KetanSingh11/SimpleChatApp
     
    import tkinter
    from socket import AF_INET, socket, SOCK_STREAM, IPPROTO_TCP, TCP_NODELAY
    from threading import Thread
     
     
    def receive():
        """ Handles receiving of messages. """
        while True:
            try:
                msg = sock.recv(BUFSIZ).decode("utf8")
                if not msg:
                    print("Received empty data - closing connection\n")
                    break
                msg_list.insert(tkinter.END, msg)
                print("Received: ", msg)
            except Exception as e:  # Possibly client has left the chat.
                print("receive error\n", e)
                break
     
    def send(event=None):
        """ Handles sending of messages. """
        msg = my_msg.get()
        my_msg.set("")  # Clears input field.
        msg += "\n"
        sock.send(bytes(msg, "utf8"))
     
    def on_closing(event=None):
        """ This function is to be called when the window is closed. """
        sock.close()
        top.quit()
     
    top = tkinter.Tk()
    top.title("Simple Chat Client v1.0")
    messages_frame = tkinter.Frame(top)
     
    my_msg = tkinter.StringVar()  # For the messages to be sent.
    my_msg.set("")
    scrollbar = tkinter.Scrollbar(messages_frame)  # To navigate through past messages.
    msg_list = tkinter.Listbox(messages_frame, height=15, width=70, yscrollcommand=scrollbar.set)
    scrollbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
    msg_list.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
    msg_list.pack()
     
    messages_frame.pack()
     
    button_label = tkinter.Label(top, text="Enter Message:")
    button_label.pack()
    entry_field = tkinter.Entry(top, textvariable=my_msg, foreground="Red")
    entry_field.bind("<Return>", send)
    entry_field.pack()
    send_button = tkinter.Button(top, text="Send", command=send)
    send_button.pack()
     
    quit_button = tkinter.Button(top, text="Quit", command=on_closing)
    quit_button.pack()
     
    top.protocol("WM_DELETE_WINDOW", on_closing)
     
    HOST = "127.0.0.1"
    PORT = 8878
    BUFSIZ = 1024
    ADDR = (HOST, PORT)
    sock = socket(AF_INET, SOCK_STREAM)
    sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)
    sock.connect(ADDR)
     
    receive_thread = Thread(target=receive)
    receive_thread.start()
    tkinter.mainloop()  # Starts GUI execution.
    Et ce que j'ai rajouté (#modif) dans def receive, mais lorsque je lance le script, il n'y a que le dernier message qui est écrit dans le TXT :

    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
     
     
    def receive():
        """ Handles receiving of messages. """
        while True:
            try:
                msg = sock.recv(BUFSIZ).decode("utf8")
                if not msg:
                    print("Received empty data - closing connection\n")
                    break
                msg_list.insert(tkinter.END, msg)
                print("Received: ", msg)
                with open('C:\\Users\\test-script.txt', mode='w') as file_object:   # modif
                 print(msg, file=file_object)                                                       # modif
            except Exception as e:  # Possibly client has left the chat.
                print("receive error\n", e)
                break
    j'ai du loupé quelque chose si vous aviez une idée pour m'aider à avancer merci !
    Nico

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 322
    Par défaut
    bonjour
    lire la doc de la fonction "open()" et en particulier son option "mode"

  3. #3
    Membre habitué
    Homme Profil pro
    Responsable des études
    Inscrit en
    Août 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2022
    Messages : 7
    Par défaut
    Merci papajoker, je vais regarder

  4. #4
    Membre habitué
    Homme Profil pro
    Responsable des études
    Inscrit en
    Août 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2022
    Messages : 7
    Par défaut
    mode='a'

    C'était tout simple .... mais quand on sait pas, bah on sait pas !

    Merci papajoker !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] Affichage des messages dans fenêtre cmd lors d'un éxecutable Python
    Par nivk-539 dans le forum Général Python
    Réponses: 3
    Dernier message: 20/10/2020, 11h23
  2. [CKEditor] Stockage des messages
    Par Perceuse-Killer dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 25/05/2009, 11h35
  3. stockage des messages avec thunderbird
    Par jackk dans le forum Thunderbird
    Réponses: 5
    Dernier message: 08/03/2009, 11h15
  4. Faites des messages corrects !!!
    Par Alacazam dans le forum C++
    Réponses: 6
    Dernier message: 23/03/2006, 15h56
  5. Réponses: 3
    Dernier message: 11/06/2003, 00h18

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