测试python中byte是否为空

时间:2016-10-13 08:27:37

标签: python byte

我想以这样的方式测试包含字节的变量的内容:

line = []
while True:
    for c in self.ser.read(): # read() from pySerial
        line.append(c)
        if c == binascii.unhexlify('0A').decode('utf8'):
            print("Line: " + line)
            line = []
            break

但这不起作用...... 如果一个字节为空,我还想测试一下: 在这种情况下

print(self.ser.read())

打印:b''(带两个单引号)

我直到现在才成功测试这个

if self.ser.read() == b''

或者总是显示语法错误...

我知道,非常基本,但我不明白......

2 个答案:

答案 0 :(得分:1)

如果要验证要从pySerial中读取的变量或字符串的内容,请使用repr()函数,如:

import serial
import repr as reprlib
from binascii import unhexlify
self.ser = serial.Serial(self.port_name, self.baudrate, self.bytesize, self.parity, self.stopbits, self.timeout, self.xonxoff, self.rtscts)
line = []
while 1:
    for c in self.ser.read(): # read() from pySerial
        line.append(c)
        if if c == b'\x0A':
            print("Line: " + line)
            print repr(unhexlify(''.join('0A'.split())).decode('utf8'))
            line = []
            break

答案 1 :(得分:1)

感谢您的帮助。问题的第一部分由@sisanared回答:

if self.ser.read():

测试空字节

问题的第二部分(带有十六进制值0A的行尾)stil不起作用,但我认为关闭这个问题是因为给出了标题的答案。

谢谢大家