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参数

python pandas中如何将dataframe中的一列字符串类型转换为浮点类型?

Python open和read功能的不同返回对象