Python - 打印输出时读取用户输入

bau*_*aum 6 python user-input

我正在尝试编写一个(命令行)python程序,该程序将接受来自用户的输入,同时仍在其上方打印数据.我正在尝试制作聊天程序.

例:

[stuff prints here]
hello
warning: the time is 27:64

Please enter your input: asdf
Run Code Online (Sandbox Code Playgroud)

所以我输入了asdf,但在输入时,上面的输出会继续更新.如果我想,我可以在生成输出时继续输入.然后如果我按回车键,就会发生其他事情.输入字段应始终低于输出文本; 如果显示更多文本,则输入字段被按下(但其内容保持不变).

我的想法是:

  • 这需要某种非阻塞读取...
  • ......还是线程?一个用于输入的线程,一个用于输出.
  • 我可能需要做一些光标操作(即向上移动光标,打印输出,将光标返回到用户输入区域)?

我意识到GUI会更容易做到.我可能最终只是用tkinter这样做了.但我仍然想知道在命令行的python中是否可以使用这种东西.

谢谢.

编辑: 我忘了提到我确实知道如何用回车符(\r)擦除文本.问题实际上是确保当我擦除行时,我不清除用户输入:所以如果在我打字时出现一个新行,我不希望我到目前为止输入的内容被删除.

py_*_*ipt 1

解决此类问题的经典方法是:

  • 有一个服务器模块侦听传入的请求并打印输入
  • 有一个线程客户端模块(在我们的示例中分为 2 个线程)。
  • 通过使用 Python 的线程库,客户端将能够同时运行。

  • 但是如何打印并接受用户输入呢?我并不是在问网络方面的问题(我已经解决了),而是在问 CLI/物流方面的问题。 (2认同)