正在读取最后一行,并用“if”语句将其删除

2021-09-27 05:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python2.7开发TCP聊天室,我的服务器应该管理多个客户机(我使用select模块)和客户机线程,我在打印什么时遇到了问题。 因为我在客户机中的原始输入包含文本,所以当负责打印其他客户机消息的另一个线程被触发时,它很容易变得难看。你知道吗

我的代码的结果如下所示:(在客户端窗口上)

WELCOME TO CHATROOM
you are connected
your pseudo is PSEUDO
other_user joined the chatroom

我的原始输入()会弹出如下:

* < your message > * :e chatroom

或者有时我通过原始输入文本收到另一个用户的消息

因为它替换了最后一行打印的内容,所以我想如果最后一行打印的内容等于我的原始输入文本,我可以删除它,在上面打印一条意外的消息,然后重新打印我的原始输入,但我不知道如何实现它。你知道吗

我尝试过用“\x1b[”-类命令移动光标并删除最后打印的行,但这些命令对我无效。你知道吗

class Sender(Thread):
    """would send messages to the server"""

    def __init__(self,  socket, username):
        Thread.__init__(self)
        self.socket = socket
        self.username = username

    def run(self):
        while 1:
            message = raw_input("* < your message > * :")
            self.socket.send(message)

class Receiver(Thread):
    import  sys

    def __init__(self,socket):
        Thread.__init__(self)
        self.connexion = socket 

    def run(self) :
        while 1:
            message_received = self.connexion.recv(4096)
            message_received = message_received.decode()
            sys.stdout.write("\r" + message_received)
            sys.stdout.flush()
            if message_recu =='' or message_recu.upper() == "OFF":
                break
        self._Thread__stop()
        print "\nClient arrete. Connexion interrompue."
        self.connexion.close()