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

Pyserial读取串口数据写入文本文件内容异常,该如何解决?

问题原因

你读取的串口数据里包含了ANSI终端转义序列,这类控制字符用于控制终端光标位置、文字样式、颜色等,IDE的控制台会自动解析并隐藏这类控制符,所以你在IDE里看到的显示是正常的,但直接写入文件时控制符会被原样保留,导致文件内容异常。

解决方法

使用正则表达式过滤掉所有ANSI转义序列后再写入文件即可,匹配ANSI转义序列的规则如下:
\x1b\[[0-9;]*[a-zA-Z]

修改后的代码片段

在你原有的decode_bytes = reading.decode()代码之后,增加过滤逻辑:

import re
# 过滤ANSI转义序列
ansi_escape = re.compile(r'\x1b\[[0-9;]*[a-zA-Z]')
clean_text = ansi_escape.sub('', decode_bytes)
# 写入过滤后的内容
with open('test_data.txt', 'w', encoding='utf-8') as f:
    f.write(clean_text)
补充说明
  • 如果测试后发现还有残留的特殊字符,可以根据实际输出的异常字符调整正则匹配规则,进一步过滤无效内容
  • 写文件时显式指定encoding='utf-8'可以避免不同系统默认编码不一致导致的乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:09:02