You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现自动过滤零值的自定义格式已用时间输出

实现方案

直接手动拆分时间单位、过滤零值后拼接字符串即可,不需要依赖timedelta的默认格式化逻辑,修改后的完整代码如下:

import time
import sys

start = time.time()

while True:
    total_seconds = int(time.time() - start)
    # 拆分各时间单位
    days, remaining = divmod(total_seconds, 86400)
    hours, remaining = divmod(remaining, 3600)
    minutes, seconds = divmod(remaining, 60)
    
    # 组装单位片段,过滤0值
    time_parts = []
    if days > 0:
        time_parts.append(f"{days}d")
    if hours > 0:
        time_parts.append(f"{hours}h")
    if minutes > 0:
        time_parts.append(f"{minutes}m")
    # 秒数兜底,所有单位为0时显示0s
    if seconds > 0 or not time_parts:
        time_parts.append(f"{seconds}s")
    
    output = ", ".join(time_parts)
    sys.stdout.write('\r\033[2K' + output)
    sys.stdout.flush()
    time.sleep(0.1)

关键逻辑说明

  • 用divmod做整除取余一步完成单位拆分,比手动单独写//和%计算更简洁
  • 按天、时、分、秒的优先级判断,仅当单位数值大于0时才加入输出片段列表,自动过滤零值单位
  • 增加秒数兜底逻辑:程序刚启动总时长为0时,会直接显示0s,避免空输出
  • 新增sys.stdout.flush()调用,解决部分终端环境下输出缓冲导致的刷新不及时问题

内容的提问来源于stack exchange,提问作者Ruri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:06:18