如何使用 writerow 将带有时间戳的整数流写入 .csv 文件?

How can I write a stream of integers with timestamps using writerow to a .csv file?

我从我设置的 Arduino uno 接收到连续的整数流。输入将进入 PsychoPy (v1.85.2),我希望将此数字流连续保存到带有时间戳的 .csv 文件中,以用于数据记录目的。

我已经确认我正在使用 print port.readline() 从 Arduino 接收输入我不确定为什么,但实际的整数流根本没有写入 .csv 文件。只有时间戳被写入 .csv 文件。

这是我在 PsychoPy 中的代码:

import serial
import time
import csv

port = serial.Serial("COM3", 9600)
# by default, the Arduino resets on connection,
# give it some time to wake-up.
time.sleep(1)


csvfile = "C:\Users\xxxx\Desktop\csvfile.csv"
while True:
    res = port.readline()
    with open (csvfile,'a') as output:
        writer = csv.writer(output)
        now = time.strftime('%d-%m-%Y %H:%M:%S')
        writer.writerow([now, res])

我不确定这是否是 Arduino 串行读取的问题,我是通过 PsychoPy 运行 的事实,或者(很可能)我的代码中存在一些错误。感谢您的帮助!

问题是 port.readline() 返回的字符串末尾带有 \n(新行)。为了解决这个问题,我使用 .strip() 删除字符串前后的所有空格,最后将字符串转换为浮点值。

while True:
res = port.readline()
resa = float(res.strip())
with open (csvfile,'a') as output:
    writer = csv.writer(output)
    now = time.strftime('%d-%m-%Y %H:%M:%S')
    writer.writerow([resa, now])