首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在python中从文本开头更新打印输出

在python中从文本开头更新打印输出
EN

Stack Overflow用户
提问于 2021-05-14 23:23:21
回答 1查看 48关注 0票数 0

我想在for循环中一个接一个地打印出各种大小的numpy数组,但在循环中的每一步都要删除前面的打印。对于长度小于1行的字符串,通常建议的解决方案如下:

代码语言:javascript
代码运行次数:0
运行
复制
import numpy as np
import time

for i in range(5):
    a = np.ones(i)
    print(a,end = '\r')
    time.sleep(0.5)

这是因为数组适合一行,所以print函数中的'\r'参数工作得很好,它返回到下一次打印的行首,所以它依次打印[][1.][1. 1. ][1. 1. 1.],依此类推。

当打印超过一行时,就会出现问题,对于'\r',它只是返回到倒数第二行,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
for i in range(5):
    a = np.ones(shape = (i,i))
    print(a,end = '\r')
    time.sleep(0.5)

这提供了以下内容:

代码语言:javascript
代码运行次数:0
运行
复制
[[1. 1.]
[[1. 1. 1.]
 [1. 1. 1.]
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]

而我希望数组在大小上进行更新,而不会在最后一行上重叠。从本质上讲,有没有一种方法可以用其他东西替换end = '\r',使它返回到整个打印的开头,而不仅仅是一行的开头?我在Jupyter notebook中使用Python 3.8.3执行此操作

EN

回答 1

Stack Overflow用户

发布于 2021-05-15 05:19:48

经过进一步的研究,我找到了一个解决方案。其中的关键词是"Jupyter notebook“,它让我找到了这个页面:

Overwrite previous output in jupyter notebook

这使用Ipython.display,我的问题的解决方案将如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
import numpy as np
import time
from IPython.display import clear_output

for i in range(5):
    clear_output(wait=True)
    a = np.ones(shape = (i,i))
    print(a)
    time.sleep(0.5)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67536824

复制
相关文章

相似问题

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