编写了一个Python代码来检索坐标并将其写入csv文件中,生成的坐标是空的,甚至没有添加标题
我使用了一个通过GPS芯片检索坐标的代码,并将其写入csv文件。csv文件已生成,但每次运行时都为空。这是我第一次用Python编写代码,所以我无法真正理解这个问题 代码如下:编写了一个Python代码来检索坐标并将其写入csv文件中,生成的坐标是空的,甚至没有添加标题,python,csv,logging,raspberry-pi,gps,Python,Csv,Logging,Raspberry Pi,Gps,我使用了一个通过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 por
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循环中关闭或刷新文件,因此文件的写入速度可能非常慢,以至于尚未刷新到磁盘 下面是代码的简化版本,添加了刷新。如果不停止运行此脚本并查看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
您的代码看起来通常是正确的,但由于您从未在无限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
导入操作系统
和打印(os.path.exists('GPSdata.csv'))
如何将其集成到这段代码中,csv库符号在这里不一样吗。(很抱歉,我对此一无所知,因此需要更多的解释)import os
和print(os.path.exists('GPSdata.csv'))
我如何将其集成到这段代码中,csv库符号在这里不一样吗。(很抱歉,我现在完全不知道,所以需要更多的解释)该文件已创建,但其中未存储任何数据,即使是headers@Ajdar您是否在代码中添加了writerow之后的刷新?你有没有试过我的例子,有没有冲水?您的代码可能存在其他问题,但这不是一个问题。请在代码中添加一些打印行,以查看它是否正确循环并接收数据。但是,您肯定需要刷新。在数据中添加打印,数据将正确接收。问题是在文件中写入。我使用了你例子的精确副本。我遇到了一些错误1。)换行符=“”遇到语法错误,因此必须将其删除。而代码的其余部分则很好。但文件还是被删除了empty@Ajdar那么您使用的是Python2。我已经更新了Python 2的示例。试试看。不要将其集成到您的代码中newline=''
是在Python 3中打开csv
文件的正确用法<代码>'wb'是Python 2的正确用法。如果为True:get\u sense\u data()
中的循环,您确定自己没有被困在中吗?如果您甚至没有获取头文件,那么代码就没有到达flush()。文件已生成,但其中没有存储任何数据,即使是headers@Ajdar您是否在代码中添加了writerow之后的刷新?你有没有试过我的例子,有没有冲水?您的代码可能存在其他问题,但这不是一个问题。请在代码中添加一些打印行,以查看它是否正确循环并接收数据。但是,您肯定需要刷新。在数据中添加打印,数据将正确接收。问题是在文件中写入。我使用了你例子的精确副本。我遇到了一些错误1。)换行符=“”遇到语法错误,因此必须将其删除。而代码的其余部分则很好。但文件还是被删除了empty@Ajdar那么您使用的是Python2。我已经更新了Python 2的示例。试试看。不要将其集成到您的代码中newline=''
是在Python 3中打开csv
文件的正确用法<代码>'wb'
是Python 2的正确用法。如果为True:get\u sense\u data()
中的循环,您确定自己没有被困在中吗?如果您甚至没有得到头,那么您的代码就没有达到flush()。