Python 中的 read() 返回类型
Posted
技术标签:
【中文标题】Python 中的 read() 返回类型【英文标题】:read() return type in Python 【发布时间】:2014-10-29 17:17:45 【问题描述】:我正在使用 Arduino 从引脚读取并通过串行端口发送值。根据返回的值,我想让 python 做点什么,但我的 if 语句永远不会返回 true。
import serial
ser = serial.Serial('COM7',9600)
while True:
data = ser.read()
print data
if data == 'a':
print 'data received'
我能够更改引脚状态并打印出数据的值,它确实返回了“a”,但从未打印过“收到的数据”。我做错了什么?
【问题讨论】:
确保末尾没有换行符。 @tidB 强调了一点。尝试“line = ser.readline()”并查看数据中是否有 'a'。 【参考方案1】:这是因为隐含的换行符。将您的 if
语句更改为:
if data == 'a\n':
【讨论】:
发布后不久(20 分钟前我的头撞到了墙上),我意识到 '\n' 一定是问题所在,而且确实是。感谢您的快速回复。 @awwende 很高兴我能帮上忙。如果我有帮助,请考虑在宽限期过后接受带有勾号的答案。 :) 或者你也可以data.strip() == 'a'
@IanAuld 是的,但直接检查不会比strip
甚至rstrip
更快吗?
@AlexThornton 可能,但如果没有新行字符或存在不同的符号(\t
、\f
、\r\n
),它将不匹配以上是关于Python 中的 read() 返回类型的主要内容,如果未能解决你的问题,请参考以下文章
java中,ImputStream类中的read(byte []b)方法
列数据中的python pandas read_csv定界符
python中read() ,readline()以及readlines()区别
pandas中pd.read_excel()方法中的converters参数