В File I / O как удалить печать новой строки - PullRequest
0 голосов
/ 03 июня 2019

Я читаю данные нескольких датчиков из Arduino через последовательный монитор.Я написал скрипт Python для записи данных с последовательного монитора в файл txt / csv.Этот файл позже читается LabVIEW.Проблема в том, что Serial Monitor отображает такие значения:

1,42.00,444.00,2.17,-15.43,-49.25,79.12,26.18,-8218,-23404,18432,-579,-757,371,620.00
2,42.00,444.00,2.17,-15.27,-49.30,79.29,26.27,-8110,-23344,18384,-535,-782,396,235.00
3,42.00,443.00,2.17,-15.64,-49.33,79.29,26.27,-8274,-23276,18228,-615,-761,371,425.00

Но вот как это отображается в текстовом файле:

1,42.00,444.00,2.17,-15.43,-49.25,79.12,26.18,-8218,-23404,18432,-579,-757,371,620.00

2,42.00,444.00,2.17,-15.27,-49.30,79.29,26.27,-8110,-23344,18384,-535,-782,396,235.00

3,42.00,443.00,2.17,-15.64,-49.33,79.29,26.27,-8274,-23276,18228,-615,-761,371,425.00

И при чтении в labVIEW эти дополнительные строки читаютсякак значение = 0 по LabVIEW.Следовательно, я получаю ошибочные данные и график, которые увеличиваются до значения и возвращаются к нулю.

"Так как же мне удалить лишний перевод строки при записи в файл. "

Я где-то читал, что добавление: newline = '' сделает работу.Но этого не происходит.Также я чувствую, что печатается не просто "\ n", а "\ n \ r". Думаю.

Фрагмент кода:

import serial
from datetime import datetime as dt
import time
serial_port='COM5'
baud_rate=9600
path="D:\LabVIEW\DB_Store.txt"
ser=serial.Serial(serial_port,baud_rate)
if ser.is_open:
    while ser.is_open:
        with open(path,'a') as f:
            print("Data flushed!")
            line=ser.readline()
            #f.write(str(dt.now()))
            f.write(str(line))
else:
    print("Port is closed!!!")

1 Ответ

1 голос
/ 03 июня 2019

Самое простое решение - использовать str.strip(). Это удалит все пробелы / символы табуляции / новой строки в начале и конце вашей строки.

Если вы хотите сохранить пробелы / табуляции, вы можете указать в качестве аргумента только символ новой строки, например

line.strip('\n')

Чтобы удалить только левый или правый, вы можете использовать варианты str.lstrip и str.rstrip.

В вашем случае я бы предложил простую полоску, например:

f.write(line.strip())
...