Python IndentationError unindent与任何外部缩进级别都不匹配

时间:2014-11-03 18:42:39

标签: python indentation

我是python的初学者,

我有这个错误:

Error : 
def on_data(self,data):
                      ^
IdentationError : unindent does not match any outer indentation level

我在notepad++中使用windows 8.1进行了编码。我不明白为什么我有这个错误,我已经注意了标签和空格。

我想在self.file中保存数据

这是我的代码:

from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
from tweepy import Stream
import tweepy
import time



class StdOutListener(StreamListener):

    def __init__(self,file):
        self.file = file

    def on_data(self, data):

        print data
        self.file.write(data)
        return True

    def on_error(self, status):
        print status


def main() :
    file = open('work.txt','w')
    listn = StdOutListener(file)
    consumer_key=""
    consumer_secret=""

    access_token=""
    access_token_secret=""

    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    #api = tweepy.API(auth)

    #filename=open('helloworld.txt','r')
    #f=filename.readlines()
    #filename.close()

    #for line in f:
    #   api.update_status(line)

    stream = Stream(auth, listn)
    stream.filter(track=['lol'])
    file.close()

7 个答案:

答案 0 :(得分:25)

您正在混合制表符和空格。不要这样做。具体来说,__init__函数体使用制表符缩进,而on_data方法则没有。

以下是我的文字编辑器中代码的屏幕截图;我将制表位设置为8个空格(这是Python使用的)并选择了文本,这使编辑器显示带有连续水平线的制表符:

highlighted code with tabs shown as lines

您的编辑器设置为将标签扩展到每四列,因此方法排列。

使用以下命令运行代码:

python -tt scriptname.py

并修复找到的所有错误。然后将编辑器配置为仅使用空格进行缩进;一个好的编辑器每次使用 TAB 键时都会插入4个空格。

答案 1 :(得分:5)

在notepad ++上如果你只是按ctrl + a得到那个错误,按一下TAB按钮,它会在你的代码中的任何地方添加标签,然后使用shift + tab删除你刚刚添加的额外标签。它会将所有“标签”更改为4个空格。当然去设置 - >偏好 - >标签设置 - >替换为空格。未来的标签现在将是4个空格。

答案 2 :(得分:2)

我有相同的问题很多次。特别是当我试图从编辑器在线粘贴几行代码时,这种情况发生了,这些空间没有正确地注册为“制表符”或“空格”。

然而,修复非常简单。我只需要删除该特定集中所有代码行的间距,并使用正确的选项卡再次将其间隔开。这解决了我的问题。

答案 3 :(得分:0)

答案 4 :(得分:0)

我最近遇到了一个同样的问题,但是这个问题与制表符和空格无关,而是一个奇怪的Unicode字符,它在我的IDE中似乎是看不见的。最终,我隔离了问题,并按原样输入了代码行,并检查了git差异:

enter image description here

如果能够在报告的行之前隔离行并再次键入,则可能会发现它可以解决您的问题。首先不会告诉您为什么会发生这种情况,但至少可以解决这个问题。

答案 5 :(得分:0)

确保仅将“”注释放在一个制表符之内,而不是5个空格

答案 6 :(得分:0)

我已经用空格正确地缩进了,但是syoll抛出错误。 然后我删除了所有空格并使用Tab,然后它开始工作。