【发布时间】:2019-03-25 21:46:02
【问题描述】:
主要问题...
我想知道(希望)有一种方法可以管理控制台输出以允许使用高级打印实用程序。
具体来说,我想知道是否有办法将打印下一个字符的“光标”移动到下一个字符空间,而不会覆盖跳过的空间中的字符。
我希望有一个不涉及安装新模块或跟踪标准输出历史的解决方案。
灵感——回车符
我知道回车符('\r')可用于将控制台输出的'光标'移回行首。
从那里,我知道你可以打印任何你想覆盖的字符,覆盖你在标准输出中输入的字符,留下之前输出的剩余字符。
但是,我想在左边留下前一个字符的 x 个字符,然后在我的行的其余部分写入我的输出,并根据需要覆盖。
例如...
我想打印输出:
_____| Name | Desc | Task | Progress |
[1] Foo Bar BarFoo [==== ] 50.0%
然后能够在不知道名称是“Foo”和 desc 是“Bar”的情况下更新第二行,以在任务下拥有“FooBar”(并更新进度条......)
_____| Name | Desc | Task | Progress |
[1] Foo Bar FooBar [===== ] 62.5%
也就是说,我想用 █ 修改下面显示的字符,同时保持下面显示的字符为 X
_____| Name | Desc | Task | Progress |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX██████XXXXXXXX████████XX█████X
我知道我可以避免这个问题...
如果我满足于让动态行内容在左侧,而静态内容在右侧,只要事先知道/限制动态内容的宽度,我就可以安全地更新行而不会丢失静态内容。 由于样式原因,我不想要这个。
我知道我可以设置一些系统来跟踪已打印的内容,并重新打印以保持静态内容。 我不想要这个,因为我正在处理的内容有很多并发性,而且为了图形效果,这样做会很乏味。
我也很好奇这种功能是否支持。
提前致谢!
【问题讨论】:
标签: python io console ascii stdout