[英]Continuously write data from a list into a CSV file
我正在嘗試讓我的python腳本繼續寫入.CSV文件,而且當涉及到python時我就是初學者。
我試圖跟隨這個有類似問題但沒有成功的人: 在Python中將字符串列表寫入Excel CSV文件
我目前正在嘗試保存包含溫度,濕度和時間的傳感器數據列表,代碼目前如下所示:
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)
我得到的錯誤是:interable expected,not int所以第一個數據值存儲在int我假設?
我已經習慣了你定義類型的java,但在這里你只需輸入變量就可以了。
我已經嘗試過writer.writerow(sensorData)然后就可以了,但正如你可能已經預料的那樣,它只是寫了一行數據。
其余代碼在while循環中運行,它將數據存儲到列表中。
我如何讓這個函數繼續寫入我的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
csv模塊的writerows
方法需要一個嵌套列表,其中每個內部列表表示單個行的數據。 在你的情況下,傳遞一個平面列表,它會在第0個索引處找到一個int
值,而不是在第一行的內部列表中。 這解釋了錯誤消息。
因此,每次調用方法時都應該使用writerow
。 但是,以寫入模式( 'w'
)打開文件將每次刪除文件的所有內容。 因此,您需要以追加模式打開文件。 玩具示例:
import csv
def write_csv(data):
with open('example.csv', 'a') as outfile:
writer = csv.writer(outfile)
writer.writerow(data)
for x in range(5):
write_csv([x, x+1])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.