[英]Read input data to csv file
我正在做一個 BeagleBone 項目,它可以測量傳感器的溫度。 我想將數據保存到 csv 文件中。 我是編程和 Python 的新手,我有點迷茫。 我已經在谷歌搜索了一段時間,發現對我有幫助的東西很少。 所以我想問這個問題。 如何每秒將新數據寫入 csv 文件?
import Adafruit_BBIO.ADC as ADC
import time
import csv
sensor_pin = 'P9_40'
ADC.setup()
while True:
reading = ADC.read(sensor_pin)
millivolts = reading * 1800 # 1.8V reference = 1800 mV
temp_c = (millivolts - 500) / 10
temp_f = (temp_c * 9/5) + 32
print('mv=%d C=%d F=%d' % (millivolts, temp_c, temp_f))
time.sleep(1)
# field names
fields = ['Milivolts', 'Celsius']
# data rows of csv file
rows = [ [millivolts,"|", temp_c]]
# name of csv file
filename = "textfile.csv"
# writing to csv file
with open(filename, 'w') as csvfile:
# creating a csv writer object
csvwriter = csv.writer(csvfile)
# writing the fields
csvwriter.writerow(fields)
# writing the data rows
csvwriter.writerows(rows)
要應用的一種修復方法是以append模式打開文件,這樣文件內容就不會在每一步都被覆蓋; 只需在這一行中將'w'
更改為'a'
:
with open(filename, 'a') as csvfile:
請注意,如果沒有任何 output 和/或您遇到的問題的描述,將很難為您提供更多幫助。
老實說,除了訂單之外,我沒有看到代碼有什么問題。
您編寫它的方式,每次迭代循環時,您都以寫入模式打開文件,這會擦除文件。 所以如果我猜對了,你可能在 CSV 中只有一行。
以下只是重新排序,它應該可以工作。 請注意,我將字段放在循環之前,因為您只想要一次。
請記住,每次運行程序時,它都會啟動一個新的 csv。 如果您希望它保留歷史記錄而不考慮中斷/重新啟動,只需刪除這些字段,然后使用open(filename, 'a')
代替。
由於這是數據內容,如果您要進行很長時間,您可能希望將time.time()
作為每一行的一部分。 這樣你就可以看到停機時間等。
import Adafruit_BBIO.ADC as ADC
import time
import csv
sensor_pin = 'P9_40'
ADC.setup()
# name of csv file
filename = "textfile.csv"
with open(filename, 'w') as csvfile:
# creating a csv writer object
csvwriter = csv.writer(csvfile)
# writing the fields
csvwriter.writerow(['Milivolts', 'Celsius'])
while True:
reading = ADC.read(sensor_pin)
millivolts = reading * 1800 # 1.8V reference = 1800 mV
temp_c = (millivolts - 500) / 10
temp_f = (temp_c * 9/5) + 32
# writing the data rows
rows = [ [millivolts,"|", temp_c]]
csvwriter.writerows(rows)
time.sleep(1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.