我使用了一个通过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文件仍然是空的
您的代码看起来通常是正确的,但是由于您从未在无限while循环中关闭或刷新文件,因此文件的写入速度可能会非常慢,以至于尚未刷新到磁盘。你知道吗
下面是代码的简化版本,添加了flush。如果您运行这个脚本而不停止它并查看CSV内容,您将看到它每秒钟添加一行。删除刷新,它可能会很长一段时间是空白的…至少在操作系统决定是时候刷新缓冲区到磁盘本身。你知道吗
相关问题 更多 >
编程相关推荐