当前位置: 首页 > 面试题库 >

输出到同一行覆盖先前的输出?

公孙琛
2023-03-14
问题内容

我正在写一个FTP下载器。代码的一部分是这样的:

ftp.retrbinary("RETR " + file_name, process)

我正在调用函数进程来处理回调:

def process(data):
    print os.path.getsize(file_name)/1024, 'KB / ', size, 'KB downloaded!'
    file.write(data)

输出是这样的:

1784  KB / KB 1829 downloaded!
1788  KB / KB 1829 downloaded!
etc...

但我希望它打印此行,下次重新打印/刷新它,因此它只会显示一次,并且我会看到下载进度。

怎么做到呢?


问题答案:

这是Python 3.x的代码:

print(os.path.getsize(file_name)/1024+'KB / '+size+' KB downloaded!', end='\r')

end=关键字是什么做的工作在这里-
在默认情况下,print()在一个换行符(结束\n)字符,但可以使用不同的字符串替换。在这种情况下,用回车符结束该行,而是将光标返回到当前行的开头。因此,无需sys为此类简单用法导入模块。print()实际上有许多关键字参数可以用来大大简化代码。

要在Python 2.6+上使用相同的代码,请将以下行放在文件顶部:

from __future__ import print_function


 类似资料:
  • 问题内容: 是否有可能覆盖最后的输出,所以我可以例如可视化数组中的更改或创建一个进度栏? 例如,如果我有这个课: 我必须怎么做才能创建一个简单的进度条,而不是显示在10行中? 问题答案: 这可以在我的特定控制台(Windows)上使用,但不是很便携… 还有课程,但据我所知实际上并没有买多少钱……

  • 在这个程序中,我试图通过使用子类ResziableCircle My code中的重写方法为radious变量赋值 为什么在调用resize函数后,输出中有radious zero的值?我试图找出代码中的问题在哪里,但找不到。

  • 问题内容: 我想将循环的输出打印到同一行的屏幕上。 如何以最简单的方式针对Python 3.x进行操作 我知道在Python 2.7的末尾使用逗号来问这个问题,即print I,但是我找不到Python 3.x的解决方案。 屏幕输出。 我要打印的是: 新读者也可以访问此链接http://docs.python.org/release/3.0.1/whatsnew/3.0.html 问题答案: 来自

  • 问题内容: 我正在写入txt文件,但是每次我执行写入过程时,它都会覆盖那里已经写入的内容。如何更改代码,使程序的这一部分不会覆盖已经存在的内容? 问题答案: 将true作为第二个参数传递给FileWriter以打开“附加”模式。

  • 如果目录已经存在,则通过rdd.saveAsPickleFile(输出路径)写入文件失败。虽然这是避免意外删除文件的一件好事,但我想知道是否有明确覆盖文件夹/文件的选项?与数据帧类似: df.write.mode('overwrite')。format('json')。save(输出路径) 注:以下两个问题在这里和这里曾经问过,但没有得到明确的答案。

  • 减速器正在计算所有相同的值: 然而,当我在hadoop上运行一个更大的数据集时,似乎丢失了一半的结果。当我在本地机器上使用cat input mapper.py sort reducer.py>out-local测试它时,如果输入合理地很小,它工作得很好,但是在更大的数据集上(例如1M个条目),本地输出文件的条目几乎是在Hadoop上运行mapreduce作业的两倍。代码有错误吗?还是我漏掉了什么