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

替换Python中的控制台输出

昌博易
2023-03-14
问题内容

我想知道如何像某些C / C ++程序那样在Python中创建这些漂亮的控制台计数器之一。

我在做一个循环,当前输出如下:

Doing thing 0
Doing thing 1
Doing thing 2
...

更整洁的是只更新最后一行;

X things done.

我已经在许多控制台程序中看到了这一点,并且想知道是否/如何在Python中做到这一点。


问题答案:

一个简单的解决方案是只"\r"在字符串之前编写而不添加换行符。如果字符串永远不会变短,那就足够了…

sys.stdout.write("\rDoing thing %i" % i)
sys.stdout.flush()

进度条稍微复杂一点……这是我正在使用的东西:

def startProgress(title):
    global progress_x
    sys.stdout.write(title + ": [" + "-"*40 + "]" + chr(8)*41)
    sys.stdout.flush()
    progress_x = 0

def progress(x):
    global progress_x
    x = int(x * 40 // 100)
    sys.stdout.write("#" * (x - progress_x))
    sys.stdout.flush()
    progress_x = x

def endProgress():
    sys.stdout.write("#" * (40 - progress_x) + "]\n")
    sys.stdout.flush()

调用startProgress传递操作的描述,然后progress(x)在那里x是个和最后endProgress()



 类似资料:
  • 问题内容: 程序应在中列出卷。 例如:我从vollist.java类获得此输出。 控制台输出: 如何在我的控制台中获得此控制台输出。 那只会显示row1-> vol1 row2-> vol1 ............如何获得类似于控制台row1-> vol1 row2-> vol2的输出(计数) 问题答案: 定义并实现您的TableModel(在这种情况下,扩展AbstractTableModel

  • 我最近在我的应用程序中安装了Firebase pods,因为我希望现在能够检查用户并允许用户注册。 但是,这是控制台中的内容: 2016-09-27 22:45:50.248 样本应用[68417:] 火垒分析 v.3402000 开始 2016-09-27 22:45:50.260785 样本应用[68417:3132777] 子系统: com.apple.libsqlite3, 分类: 日志记

  • 我无法在Eclipse中运行python控制台。我下载了Pydev,设置了一个解释器和一个PYTHONPATH并导入了一个项目,一个Django项目。我将项目设置为Django的一个,然后我尝试右键单击带有Django环境的Project-->Django-->Shell。 我在控制台中出现了以下错误: 如果我尝试打开一个Windows shell并执行通常的python manage.py sh

  • 问题内容: 我正在使用Pygame / SDL的操纵杆模块从游戏手柄获取输入。每次调用它的方法时,它都会打印到控制台。这是有问题的,因为我使用控制台来帮助我进行调试,现在每秒被淹没60次。有什么方法可以禁用此功能吗?通过Pygame / SDL中的选项还是在函数调用时取消控制台输出?我在Pygame文档中没有提到这一点。 编辑: 原来是由于在编译SDL库时打开了调试功能。 问题答案: 这是来自jo

  • 问题内容: 我正在尝试用Python创建一个简单的IRC客户端(这是我学习该语言时的一个项目)。 我有一个循环,可以用来接收和解析IRC服务器发送给我的内容,但是如果我使用它raw_input来输入内容,它将停止循环,直到我输入某些东西为止(显然)。 如何在不停止循环的情况下输入内容? 提前致谢。 (我认为我不需要发布代码,我只想输入一些内容,而while 1循环不会停止。) 编辑:我在Windo

  • 使用Windows下的Eclipse Juno,我配置了一个外部工具,该工具调用程序,并将Python脚本文件作为参数运行(后者位于双引号之间,如)。 我还再次检查了外部工具配置窗口中的“Common”选项卡中是否设置了“Allocate Console”选项。