gpt4 book ai didi

带日志记录的 Python 控制台

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:46 26 4
gpt4 key购买 nike

我正在重写一个服务器程序,我想在其中添加一个简单的控制台输入。

目前,它只是提供数据并为它所做的每一件事打印出一两行,作为任何观看/调试的人的描述性措施。

我想要的是有一个始终位于底部的“粘性”输入栏,在其上方出现我的调试打印,以便我可以在程序打印时随时输入命令。这看起来有点像:

...
[88.88.88.88] Handling Connection on Port 11452
[12.12.12.12] Received Data
[44.44.44.44] Sending Disconnect Sequence
>>>Enter Data Here at Any Time

理想情况下,这将在没有诅咒的情况下完成,因为这会使事情复杂化。我觉得我一定缺少一个简单的解决方案。

提前致谢

弗莱迪。

最佳答案

如果您正在寻找比 curses 稍微高级一点的库,这里有一些,比如 urwid (尽管它们当然不随 Python 一起提供,并且必须安装)。

如果你真的想避免使用窗口库,我想你可以在 screen 下运行服务器,配置了一个输入栏和一个剩余窗口,并为服务器提供了两个虚拟 TTY,而不是正常的输入……但这会增加很多工作,而不是更少。

如果你想进入更低的级别,你总是可以使用 termios,搜索 termcap,并手动编写控制序列来手动处理滚动除最后一行以外的所有内容、移动输入光标等。但这将需要更多的工作。

当然,总是有 super hacky 的可能性:对于每个输出,在每个输入之后,通过发送几百个空白行、重写输出和输入行来“重绘”整个屏幕。这看起来很糟糕,并且在各种边缘情况下都不起作用,但它确实避免了任何类型的窗口化。


不过,我认为有更好的方法来解决这个问题。

您已经有了一个服务器。为什么不在另一个“控制”端口(可能只是在本地主机上)而不是在 stdin/stdout/tty 上提供控制台 API?即使服务器作为守护进程运行,这也能正常工作。这意味着您可以使用您最喜欢的花式 Telnet 或类似客户端作为控制台,而不必从头开始编写一些东西。

关于带日志记录的 Python 控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18903501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com