Python 以10为基数的int()的文本无效:'';

Python 以10为基数的int()的文本无效:'';,python,casting,slice,Python,Casting,Slice,我尝试自学python,并尝试为我的Raspberry Pi创建一个远程可访问的服务器,用于GPIO连接。当我建立连接时,我发送的第一个输入是我在Putty中实际键入的内容,然后输入是“”。所以我检查了一下,但是我仍然在if int(data[0])==0:line上得到了这个消息。有什么建议吗?抱歉,如果这是一个新手问题 def run(self): try: while True: ret = -1 data = sel

我尝试自学python,并尝试为我的Raspberry Pi创建一个远程可访问的服务器,用于GPIO连接。当我建立连接时,我发送的第一个输入是我在Putty中实际键入的内容,然后输入是“”。所以我检查了一下,但是我仍然在if int(data[0])==0:line上得到了这个消息。有什么建议吗?抱歉,如果这是一个新手问题

def run(self):
    try:
        while True:
            ret = -1
            data = self.cs.recv(self.BUFFERSIZE)
            if data=='':
                continue
            elif int(data[0])==0:
                self.cs.send(str(GPIO_setup(data)))
            elif int(data[0])==1:
                self.cs.send(str(GPIO_output(data)))
            elif int(data[0])==2:
                self.cs.close()
    except RuntimeError:
        if self.cs:
            self.cs.close()

数据[0]可能是“”或无数不是数字的其他内容。但要进行调试,请尝试以下操作:

def run(self):
    data = None
    try:
        while True:
            ret = -1
            data = self.cs.recv(self.BUFFERSIZE)
            if data=='':
                continue
            elif int(data[0])==0:
                self.cs.send(str(GPIO_setup(data)))
            elif int(data[0])==1:
                self.cs.send(str(GPIO_output(data)))
            elif int(data[0])==2:
                self.cs.close()
    except RuntimeError:
        print "error on input of: '%s'" % data
        if self.cs:
            self.cs.close()

由于您的代码和错误,我怀疑
data
是一个列表。这将完全按照您观察到的方式失败:

In [2]: data = ['', 'test']

In [3]: data == ''
Out[3]: False

In [4]: data[0]
Out[4]: ''

In [5]: int(data[0])
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-4196b6567736> in <module>()
----> 1 int(data[0])

ValueError: invalid literal for int() with base 10: ''

尝试此操作后,在输入:时出现
错误,失败了,并且出现了一行新行…因此我猜数据是一个字符…知道为什么吗?该测试也失败了…似乎len(数据[0])不是0,len(数据)不是0,但数据[0]仍然是“请在函数中添加一行
打印数据
,运行它,告诉我们数据到底是什么…试试打印类型(数据)
,至少可以告诉你它是什么。
data = self.cs.recv(self.BUFFERSIZE)
if len(data[0]) == 0:
    continue