读取输入数据到csv文件

Read input data to csv file

我正在做一个测量传感器温度的 BeagleBone 项目。我想将数据保存到 CSV 文件中。我是编程新手,Python,我有点迷路。我已经 google 搜索了一段时间,但几乎没有找到可以帮助我的东西。所以我想问问这个。如何每秒将新数据写入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:

请注意,如果没有任何输出and/or描述您遇到的问题,将很难为您提供更多帮助。

老实说,除了顺序之外,我没发现代码有什么问题。

按照你写的方式,每次迭代循环时,你都会以写入模式打开文件,这会擦除文件。因此,如果我猜对了,您的 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)