Python读取RedBoard QWIIC传感器数据:解决末尾值换行缩进问题
解决串口读取传感器数据时末尾数值换行缩进的格式问题
你的问题核心是传感器输出的原始数据中可能包含隐藏的换行/回车符(即使你改成空格,传感器可能仍在某些位置输出了\r或\n),导致readline()读取到的字符串本身就带有分段的换行,最终写入文件时格式混乱。下面是修改后的代码和关键说明:
修改后的代码
import serial import time serialPort_1 = 'COM3' baud_rate = 9600 write_to_file_path = "test 1 7-21-22.txt" # 用with语句自动管理文件和串口,避免资源泄漏 with open(write_to_file_path, "w+") as output_file, serial.Serial(serialPort_1, baud_rate, timeout=4) as ser1: while True: line1 = ser1.readline() if not line1: continue # 超时无数据时跳过 # 解码后清除字符串两端所有空白字符(包括多余换行、回车、空格) cleaned_line = line1.decode("utf-8").strip() if not cleaned_line: continue # 跳过空行 # 拼接时间戳和清理后的数据,手动添加标准换行 log_entry = f"{time.strftime('%m/%d/%Y %H:%M:%S')} {cleaned_line}\n" print(log_entry.rstrip()) # 打印时去掉末尾换行,避免重复输出空行 output_file.write(log_entry) output_file.flush() # 强制写入文件,避免缓冲区延迟 time.sleep(0.00001)
关键修改点说明
strip()方法:彻底清除读取到的字符串前后的所有空白字符(包括传感器可能输出的\r、\n、多余空格或制表符),从根源上解决末尾数值被换行拆分的问题。- 手动添加
\n:保证每条日志记录在文件中单独占一行,格式完全可控,不会受原始数据中的异常换行影响。 with语句:自动处理文件和串口的关闭操作,避免程序意外退出时出现资源占用或数据丢失。- 空行过滤:跳过无效的空数据行,让生成的日志文件更干净。
flush()强制写入:确保数据实时写入文件,避免缓冲区积累导致的内容延迟或丢失。
内容的提问来源于stack exchange,提问作者czar1249
相关产品推荐
相关产品推荐

