首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中将光标重置到同一行的开头

如何在Python中将光标重置到同一行的开头
EN

Stack Overflow用户
提问于 2011-10-11 00:06:40
回答 6查看 53.8K关注 0票数 36

在SO中,与此主题相关的大多数问题如下:

如何在不引入新行的情况下在同一行上打印一些信息

Q1 Q2.

相反,我的问题如下:

我期望看到以下效果,

代码语言:javascript
复制
>> You have finished 10%

其中10在同一时间内不断增加。我知道如何在C++中做到这一点,但在python中找不到一个好的解决方案。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-10-11 00:13:13

代码语言:javascript
复制
import sys, time

for i in xrange(0, 101, 10):
  print '\r>> You have finished %d%%' % i,
  sys.stdout.flush()
  time.sleep(2)
print

\r是回车符。您需要在print语句末尾使用逗号,以避免自动换行。最后,需要sys.stdout.flush()将缓冲区刷新到标准输出。

对于Python 3,您可以使用:

代码语言:javascript
复制
print("\r>> You have finished {}%".format(i), end='')
票数 35
EN

Stack Overflow用户

发布于 2011-10-11 00:15:02

Python 3

您可以将关键字参数用于print

print('string', end='\r', flush=True)

  • end='\r'将默认的行尾行为替换为'\r'
  • flush=True刷新缓冲区,使打印的文本立即显示。

Python 2

在2.6+中,您可以在脚本开头使用from __future__ import print_function来启用Python3行为。或者使用老方法:

Python的print会在每个命令后加上一个换行符,除非您在命令后面加上一个逗号。因此,打印命令是:

代码语言:javascript
复制
print 'You have finished {0}%\r'.format(percentage),

注意末尾的逗号。

不幸的是,Python只在一个完整的行后将输出发送到终端。以上不是完整的一行,您需要手动对其执行flush

代码语言:javascript
复制
import sys
sys.stdout.flush()
票数 26
EN

Stack Overflow用户

发布于 2011-10-11 00:25:20

在linux(可能还有windows)上,你可以像这样使用curses模块。

代码语言:javascript
复制
import time
import curses

win = curses.initscr()
for i in range(100):
    win.clear()
    win.addstr("You have finished %d%%"%i)
    win.refresh()
    time.sleep(.1)
curses.endwin()

相对于其他更简单的技术,curses的优点是,你可以像图形程序一样在终端上绘图,因为curses提供了移动到任何x,y位置的功能,例如下面是一个简单的脚本,它更新了四个视图

代码语言:javascript
复制
import time
import curses

curses.initscr()

rows = 10
cols= 30
winlist = []
for r in range(2):
    for c in range(2):
        win = curses.newwin(rows, cols, r*rows, c*cols)
        win.clear()
        win.border()
        winlist.append(win)

for i in range(100):
    for win in winlist:
        win.addstr(5,5,"You have finished - %d%%"%i)
        win.refresh()
    time.sleep(.05)
curses.endwin()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7715594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档