簡體   English   中英

將列表中的數據連續寫入CSV文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM