【发布时间】:2016-02-06 19:33:06
【问题描述】:
我有一些输出想要重写,并且有一个简单的 Python 函数可以很好地完成这个任务(在 OS X 上的终端中),但我不确定我是否可以依赖它:
import sys
import time
def print_over(s):
print(s, end='\r')
print("\033[F" * (s.count('\n')+1))
sys.stdout.flush()
time.sleep(0.2)
我知道在某些情况下这当然行不通,但想知道
- 我可以期望它在多大程度上工作(例如,是否只是 OS X 的一些怪癖允许这样做),
- 如何描述它将在哪里起作用和在哪里不起作用(例如,是否有一些 POSIX 或其他标准可以保证它会起作用),以及
- 我是否可以从我的代码中检测到它是否可以工作。
【问题讨论】:
-
它不能在 Windows 上运行。
-
@MarkRansom:有什么东西可以让类似的东西在 Windows 上运行吗?
-
@ZN13:这也“向上滚动”吗?
-
@raxacoricofallapatorius 试试看
import sys, time for progress in range(0,101): sys.stdout.write("Download progress: %d%% \r" % (progress) ) sys.stdout.flush() time.sleep(0.2) print ("")编辑:评论格式很棒。
标签: python python-2.7 output ansi-escape