Очистите файл с помощью serial.readline () в основном цикле - PullRequest
0 голосов
/ 12 декабря 2018

Я пытался отправить данные, которые я получаю от последовательного порта.Я читаю данные ASCII с моего устройства, используя serial.readline().Когда я использую эту функцию в основном цикле, я могу напечатать строку, но не могу отправить ее в свой выходной файл.Моя функция 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

1 Ответ

0 голосов
/ 13 декабря 2018

Файл будет сброшен при заполнении буфера и закрыт при выходе из блока with.Если вы останетесь в цикле навсегда, никаких изменений в файле не будет видно, пока буфер не будет заполнен.

Вы можете изменить буферизацию в выходном файле.См. Как часто Python сбрасывает в файл?

В вашем примере вы можете использовать

with open('output.csv', 'a', buffering=0) as f:
...