【发布时间】:2019-07-25 19:08:09
【问题描述】:
我是 python 新手,如果这是一个超级简单的问题,请原谅我。我目前有一个 arduino 通过串口发送 3 个值。在此之后,它被解码和拆分。如果值 1 高于 120,我只想将一行值记录到 csv。每当我尝试这样做时,代码都会立即中断。谢谢。
import serial
import csv
Finger = "1"
ser = serial.Serial('COM6', 9600)
while True:
try:
data = ser.readline()
decode = (data[0:len(data)-2].decode("utf-8"))
datasplit = decode.split('-')
Val1 = datasplit [0]
Val2 = datasplit [1]
Val3 = datasplit [2]
print(Val1)
with open("EMGSig16.csv","a") as f:
writer = csv.writer(f,delimiter=",")
if Val1 >= 120:
writer.writerow([Finger,Val1,Val2,Val3])
else:
continue
except:
break
编辑:抱歉延迟回复(我在第三班工作)。这是我没有阈值的正常值的屏幕截图 Normal Value 1。当我重新添加阈值时,我得到了这个With Threshold。
【问题讨论】:
-
您应该打印或记录您的错误,它可能会对您和读者有所帮助。您可以使用
except Exception as e: print(e)来完成。也许,您有一个错误,因为Val1不是 int 并且比较失败。要转换,请执行int(datasplit[0])。 -
你能打印所有的 Vals 吗?然后用输出编辑问题。或打印和编辑错误回溯问题。
-
也许 datasplit 变量存储了 str 类型的值。请输入 type(Val1) 进行检查
-
@ndclt 我已经尝试过这种方法,结果与我之前的尝试相同。
-
@MadhurYadav 是的!变量是 str 类型的值,但是当我按照上面的建议使用 int(datasplit[0]) 时,我仍然得到相同的结果。
标签: python python-3.x csv file-writing