写了一个Python代码来检索坐标并将它们写在csv文件中,这个文件是空的,甚至没有添加头

2024-04-19 12:20:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用了一个通过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文件仍然是空的


Tags: 文件csv代码importdatadatetimeportcounter
1条回答
网友
1楼 · 发布于 2024-04-19 12:20:00

您的代码看起来通常是正确的,但是由于您从未在无限while循环中关闭或刷新文件,因此文件的写入速度可能会非常慢,以至于尚未刷新到磁盘。你知道吗

下面是代码的简化版本,添加了flush。如果您运行这个脚本而不停止它并查看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

相关问题 更多 >