我一直在尝试发送从串行端口接收到的数据。我正在使用serial.readline()
从设备读取ASCII数据。在主循环中使用此功能时,可以打印字符串,但不能将其发送到输出文件。将f.write()
放入循环时,我的readline()
函数无法正常工作。知道如何解决这个问题吗?
import serial
import csv
ser=serial.Serial('COM6', 9600, 8, parity='N', timeout=2)
with open('output.csv','a') as f:
while True:
line = ser.readline()
if line:
print(line)
f.write(line)
这是我得到的数据,但是在输出文件中什么也没有。
0R5,Th=24.3C,Vs=24.2V
0R2,Ta=23.3C,Ua=21.3P,Pa=1026.9H
0R1,Dm=000#,Sm=99.9#
0R5,Th=24.3C,Vs=24.2V
答案 0 :(得分:0)
当缓冲区已满时,文件将被刷新,而在退出with
块时将被关闭。
如果您永远处于循环状态,则在缓冲区被填满之前不会看到文件更改。
您可以更改输出文件上的缓冲。参见How often does python flush to a file?
在您的示例中,您可以使用
with open('output.csv', 'a', buffering=0) as f: