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

如何让Python logger按屏幕显示规则解析回车符,保留最终进度状态

解决方案

核心逻辑非常简单:按换行符\n拆分出所有逻辑行块,每个块内按回车符\r拆分后取最后一段(就是被回车覆盖后保留的最终内容),再把处理后的块拼接回去即可。

极简实现代码

def process_carriage_return(raw_str: str) -> str:
    # 拆分每个逻辑行,处理行内回车覆盖的冗余内容
    processed_lines = [line_block.split('\r')[-1] for line_block in raw_str.split('\n')]
    return '\n'.join(processed_lines)

使用示例

用你给出的测试数据验证:

receivedData = "command x exec: \nin progress    0/8192\rin progress 8096/8192\rin progress 8128/8192\rin progress 8160/8192\rin progress 8192/8192\nDONE"
result = process_carriage_return(receivedData)

# 写入日志前直接处理即可
import logging
logging.basicConfig(filename='serial.log', level=logging.INFO)
logging.info(result)

处理后的输出完全符合你的预期:

command x exec: 
in progress 8192/8192
DONE

说明

这个实现天然支持所有常见边界场景:连续多个\r、行首行尾有\r、空内容块等,不需要额外加判断逻辑,性能也足够处理串口接收的普通数据量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:27:02