我正在尝试让我的Python脚本持续将数据写入一个.CSV文件,但我在Python方面是个新手。
我尝试跟随这位有类似问题的人,但没有成功: Writing List of Strings to Excel CSV File in Python 我目前正在尝试保存传感器数据列表,其中包含温度、湿度和时间。代码目前看起来像这样:
我收到的错误是:期望可迭代对象,而不是整数。所以第一个数据值被存储在一个整数中,我猜是这样吧?
我习惯于Java,那里你定义类型,但在这里,你只需输入变量,所以嗯,是的。
我尝试了writer.writerow(sensorData),它可以工作,但正如您可能已经预料到的那样,它只会写入一行数据。
代码的其余部分在while true循环中运行,其中它将数据存储到列表中。
如何使此函数继续写入我的csv文件,并随着循环的运行添加更多数据?
getSensorData函数:
我尝试跟随这位有类似问题的人,但没有成功: Writing List of Strings to Excel CSV File in Python 我目前正在尝试保存传感器数据列表,其中包含温度、湿度和时间。代码目前看起来像这样:
def writeDataToFile():
sensorData = []
sensorData = getSensorData()
with open("/home/pi/Documents/Python Projects/CSV-files/sensor_data.csv", 'w') as csv_file:
writer = csv.writer(csv_file, delimiter=',')
writer.writerows(sensorData)
我收到的错误是:期望可迭代对象,而不是整数。所以第一个数据值被存储在一个整数中,我猜是这样吧?
我习惯于Java,那里你定义类型,但在这里,你只需输入变量,所以嗯,是的。
我尝试了writer.writerow(sensorData),它可以工作,但正如您可能已经预料到的那样,它只会写入一行数据。
代码的其余部分在while true循环中运行,其中它将数据存储到列表中。
如何使此函数继续写入我的csv文件,并随着循环的运行添加更多数据?
getSensorData函数:
def getSensorData():
sensorData = []
temperature = getTemperatureFromSensor()
humidity = getHumidityFromSensor()
time = getCurrentFormatedTimestamp()
sensorData.append(temperature)
sensorData.append(humidity)
sensorData.append(time)
return sensorData
所以我尝试简单地打印出列表,它确切地做到了我想要的:
[29, 21, '2017-10-30 15:02:47']
[29, 21, '2017-10-30 15:02:52']
[29, 22, '2017-10-30 15:02:57']
[29, 21, '2017-10-30 15:03:02']
[28, 21, '2017-10-30 15:03:07']
[28, 21, '2017-10-30 15:03:13']
等等,这基本上就是我想要存储到CSV文件中的内容。
getSensorData()
函数吗? - scharettegetSensorData()
将返回一个int
,因此每次调用该方法时,您都需要writerow
该值。 - roganjoshwriterows
期望你传递一个嵌套列表,其中每个内部列表代表一行。如果你传递一个单独的列表,它会在索引0处找到一个int值,而实际上它期望的是代表第一行的列表。这就是错误的来源。你应该使用writerow
。这是我之前评论的补充;你需要使用追加模式来避免每次打开文件时覆盖先前的数据。 - roganjosh