我只是想知道是否可以在顶行打印最后一件事,例如:
Print("hello")
Print("hello, again...")
让空闲shell看起来像:
hello, again...
hello
而不是相反。有没有人知道python中的任何命令,我可以使用它来使最后一个打印项目出现在shell的顶部?
答案 0 :(得分:0)
如果我有一个定时器每秒更新一个变量,我将如何确保清除旧值:
import time
print("hello", end="\r")
time.sleep(1)
print("hello, again...",end="\r")
您需要从非空闲的地方运行代码,因为它不是真正的tty,使用clear
或cls
也将在空闲时失败。你可以使用注释中提到的curses lib,但实现起来肯定不是一件容易的事,如果你想像你问题中的行那样反转输出你可以将stdout重定向到io.StringIO对象并反转这些行:
from contextlib import redirect_stdout
from io import StringIO
f = StringIO()
with redirect_stdout(f):
print("hello")
print("hello, again...")
f.seek(0)
print("".join(f.readlines()[::-1]))
空闲时输出:
hello, again...
hello
如果我是你,我会放弃,你所看到的是使用闲置时可能遇到的许多限制之一。 如果您确实希望保持闲置状态,则应下载idlex extensions,其中{{}}}使闲置工作更像终端
答案 1 :(得分:0)
这在使用Python 3的Windows上对我有用
pip install windows-curses
示例:
import curses
import time
stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
try:
stdscr.addstr(0, 0, "Printing Numbers...")
for i in range(10):
stdscr.addstr(1, 0, "Number: {0}".format(i))
stdscr.insertln()
stdscr.refresh()
time.sleep(0.5)
finally:
curses.echo()
curses.nocbreak()
curses.endwin()
使用stdscr.insertln()可以在光标下方插入空白行。接下来的所有行都向下移动一行。
有关诅咒的更多信息,请参见: https://docs.python.org/2/library/curses.html
答案 2 :(得分:-1)
我唯一想到的就是跟踪所有打印的内容并每次清理控制台。
import os
console_lines = []
def reverse_print(text):
console_lines.append(text)
os.system('cls')
print('\n'.join(reversed(console_lines)))
reverse_print('hi')
reverse_print('hello')
reverse_print('okay')