在 Python 中打印进度条处理

2024-04-09

我编写了这个简单的函数“processing_flush”,以便打印一系列点(由索引给出)来测试我的软件是否正在处理我的数据以及最终的速度。 我的数据的总大小未知。

    import sys
    import time

    def processing_flush(n, index=5):
        sys.stdout.write("\rProcessing %s" % ((n % index)* "."))
        sys.stdout.flush()

    for n in xrange(20):
        processing_flush(n, index=5)
        time.sleep(1)

我无法解决的问题是,当第一次打印所有点时(例如:处理...如果索引等于 5),光标不会从零开始。


在再次覆盖同一行之前,您至少需要清除点有空格的位置。

def processing_flush(n, index=5):
    sys.stdout.write("\rProcessing %s" % (index * " "))
    sys.stdout.write("\rProcessing %s" % ((n % index)* "."))
    sys.stdout.flush()

上面的代码可能会导致一些短暂的闪烁。在您的具体情况下,在以下情况下清除线路就足够了n % index变为0:

def processing_flush(n, index=5):
    if n % index == 0:
        sys.stdout.write("\rProcessing %s" % (index * " "))
    sys.stdout.write("\rProcessing %s" % ((n % index)* "."))
    sys.stdout.flush()

或者更好的是总是写index-1人物:

def processing_flush(n, index=5):
    sys.stdout.write("\rProcessing %s%s" % ((n % index)* ".", (index - 1 - (n % index))* " "))
    sys.stdout.flush()

Edit 1:或者,如果您希望光标始终位于最后一个点之后:

def processing_flush(n, index=5):
    sys.stdout.write("\rProcessing %s%s" % ((n % index)* ".", (index - 1 - (n % index))* " "))
    sys.stdout.write("\rProcessing %s" % ((n % index)* "."))
    sys.stdout.flush()

Edit 2:或者,如果您希望光标始终位于行首:

def processing_flush(n, index=5):
    sys.stdout.write("Processing %s%s\r" % ((n % index)* ".", (index - 1 - (n % index))* " "))
    sys.stdout.flush()

原因是,如果您只覆盖前一行的第一部分,您的 shell 会记住前一行的剩余字符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中打印进度条处理 的相关文章

随机推荐

  • Mysql 之间和等于在哪里?

    我有一个mysql函数 SELECT FROM stats WHERE BETWEEN 2011 01 03 AND 2011 01 01 AND email email protected cdn cgi l email protecti
  • 如何捕获回击后返回活动的事件

    我的应用程序有一个主屏幕 然后会进入不同的屏幕 每个屏幕都会返回主屏幕 每次用户 返回 主屏幕时我都想做一些事情 我如何捕获这种事件 在您的主活动中使用 onResume 方法或通过重写子活动中的 keyDown 方法在您的活动中使用 st
  • 如何将 Firebase 数据库持久性存储限制为仅某些节点?

    将以下代码添加到AppDelegate将使 Firebase 数据库在用户离线时可用 FIRDatabase database persistenceEnabled true 我们怎样才能使数据库的某些部分在离线模式下可用 而另一些部分在用
  • 获取纸质单选按钮的值

    我有以下代码
  • UITableview 中的自动布局与动态单元格高度

    对于我的表格视图单元格的动态高度 我从此链接中引用 在 UITableView 中使用自动布局来实现动态单元格布局和可变行高 https stackoverflow com questions 18746929 using auto lay
  • Grails 和子域

    Grails 知道有关子域 即 subdomain domain com 的任何信息吗 我没有看到它在manual http grails org doc 2 0 x guide single html 这纯粹是应用程序服务器 网络服务器问
  • Pygame.mixer 模块丢失?

    我正在尝试为朋友制作一个小程序 它需要运行 wav 文件 当我在 python 中运行它时它工作正常 但是当我在 py2exe 中编译它时它给了我这个 gt phone exe 23 RuntimeWarning use mixer DLL
  • 函数参数的模式匹配

    我有一个元组向量 val l for i lt 1 to 5 yield i i 2 Vector 1 2 2 4 3 6 4 8 5 10 我想用以下方式总结一下 l reduce x y gt x 1 y 1 x 2 y 2 15 30
  • C++ 链接错误

    我有多个通过 hxx 头文件和继承连接的类 这都是关于操作系统模拟的 我单独编译它们 看看是否有任何语法错误 但事实并非如此 相反 当我编译主驱动程序 osTester cxx 时 我得到这样的链接错误 include
  • 有没有办法直接消耗人造丝链而不先收集它?

    我使用 Rayon 来产生相当大的返回值 将所有返回值收集到一个中时 这会使用大量内存Vec 有没有办法避免创建Vec并直接作为可迭代对象使用 这是一个不起作用的示例 fn main let numbers Vec lt gt 12 03
  • Python:如何修复我的代码以便追加将参数添加到列表中?

    我对 python 很陌生 我一直在尝试执行此代码 其中我使用 tkinter 按钮命令来运行函数 它可以工作 但append 没有执行 这意味着它不会附加到列表中 列表和包含附加的函数位于类外部 然后通过使用 tkinter 按钮命令在类
  • numpy.choose 的替代方案允许任意或至少超过 32 个参数?

    使用我的代码 我遇到了一个问题numpy choose方法不接受所有参数 因为它受到以下限制NPY MAXARGS 32 是否有可用的替代方案 允许任意数量的参数数组或至少超过32那是一样快numpy choose choices np a
  • 带有 UpdatePanel 回发的 ajax“正在加载”图标

    我有一个根据用户选择使用 Ajax 动态构建的表单 使用 UpdatePanel 内置于 NET Ajax 如何在回发发生时插入 标准 ajax 加载图标 也许将其附加到鼠标指针 然后在回发完成后将其删除 如果有帮助的话 我确实安装了 Aj
  • 如果存在以前的版本,如何使msi覆盖程序?

    我正在使用 Visual Studio 2010 我正在开发一个 Windows 应用程序 在尝试为其创建自动更新程序时遇到了严重的问题 当程序找到新版本并尝试安装它时 由于以下两个原因而无法安装 1 the application is
  • numpy中如何进行卷积矩阵运算?

    有办法吗卷积矩阵 https en wikipedia org wiki Kernel image processing 使用numpy进行操作 The numpy convolve https docs scipy org doc num
  • Shape、Sprite、MovieClip 和其他显示对象:何时使用?

    有大量的显示对象flash display包裹 我不清楚在什么情况下应该使用Shape Sprite or MovieClip 使用它们各自的优点和缺点是什么 先感谢您 Shape http help adobe com en US Fla
  • 通过同时/并发文件传输加速 rsync?

    我们需要转移15TB尽可能快地将数据从一台服务器传输到另一台服务器 我们目前正在使用rsync但我们只能得到大约的速度150Mb s 当我们的网络能够900 Mb s 测试与iperf 我已经对磁盘 网络等进行了测试 发现 rsync 一次
  • C/找到190! C 编程中的(阶乘)

    我尝试寻找190 in C 我将变量定义为 long double 但我发现它 正确 仅计算为 172 之后 我得到了 INF00000 有什么办法可以做到吗 实际上只需几行代码即可实现足够的 bigint 实现来计算阶乘 下面的代码打印前
  • PushSharp 不识别 APN 生产证书

    我开发了一个 iOS 应用程序 可以接收推送通知 我使用 PushSharp 从 NET 环境发送它们 开发过程中一切都很顺利 推送已成功发送 var push new PushBroker var appleCert File ReadA
  • 在 Python 中打印进度条处理

    我编写了这个简单的函数 processing flush 以便打印一系列点 由索引给出 来测试我的软件是否正在处理我的数据以及最终的速度 我的数据的总大小未知 import sys import time def processing fl