Написал код Python для получения координат и записи их в CSV-файл, он сделан, но пуст, даже заголовки не добавлены - PullRequest
0 голосов
/ 05 июля 2019

Я использовал код, который получает координаты через чип GPS и записывает его в CSV-файл.CSV-файл создан, но пуст при каждом запуске.Я впервые пишу на Python, поэтому не могу разобраться с проблемой.

Вот код:

from time import sleep, strftime, time
import serial
import pynmea2
import datetime
from csv import writer

#setup the serial port to which gps is connected 
port = "/dev/ttyS0"
ser = serial.Serial(port, baudrate = 9600, timeout = 0.5)
dataout  = pynmea2.NMEAStreamReader()
counter = 0

def get_sense_data():
    while True:
        newdata = ser.readline()
        if newdata[0:6] == '$GPGGA':
            parsed_line = pynmea2.parse(newdata)
            latitude_reading = parsed_line.latitude
            alpha = latitude_reading
            longitude_reading = parsed_line.longitude
            beta = longitude_reading
            sense_data=[]
            sense_data.append(counter)
            sense_data.append(datetime.datetime.now())
            sense_data.append(alpha)
            sense_data.append(beta)
            return sense_data

with open('GPSdata.csv', 'w+') as f:
    data_writer = writer(f)
    data_writer.writerow(['Term No.','Date and Time','Latitude','Longitude'])
    while True:
        data = get_sense_data()
        data_writer.writerow(data)
        counter = counter + 1

Я также попытался немного изменить отступы, но CSV-файл все еще выходит пустым

1 Ответ

2 голосов
/ 05 июля 2019

Ваш код выглядит в целом правильно, но поскольку вы никогда не закрываете и не очищаете файл в бесконечном цикле while, файл может записываться достаточно медленно, чтобы он еще не был записан на диск.

Вот упрощенныйверсия вашего кода с добавлением флеша.Если вы запустите этот скрипт, не останавливая его, и посмотрите на содержимое CSV, вы увидите, что он добавляет строку каждую секунду.Удалите сброс, и он может оставаться пустым в течение длительного времени ... по крайней мере, пока ОС не решит, что пришло время сбросить буфер на сам диск.

#!python2
from csv import writer
import time

counter = 0

with open('GPSdata.csv', 'wb') as f:
    data_writer = writer(f)
    data_writer.writerow(['Term No.','Date and Time','Latitude','Longitude'])
    while True:
        time.sleep(1)
        data = [counter,2,3,4]
        data_writer.writerow(data)
        print(data)
        f.flush()
        counter = counter + 1
...