Python 缩进错误:缩进级别不匹配

16 投票
7 回答
264511 浏览
提问于 2025-05-01 09:07

我刚开始学习 python

我遇到了这个错误:

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

我在 windows 8.1 上用 notepad++ 编写代码。我不明白为什么会出现这个错误,我已经注意到缩进和空格的问题。

我想把数据保存到 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 个回答

1

确保 """ 的注释只需要一个制表符的距离,而不是五个空格。

1

我最近遇到了同样的问题,但这个问题不是因为制表符和空格,而是因为在我的开发环境中出现了一个看不见的奇怪Unicode字符。最后,我找到了问题的根源,重新输入了那一行代码,并检查了git的差异:

在这里输入图片描述

如果你能找到出问题的那一行之前的代码,并重新输入一遍,可能会发现这样就解决了你的问题。我不能告诉你为什么一开始会出现这个问题,但至少这样可以消除这个麻烦。

4

我之前也遇到过同样的问题,特别是在我尝试从网上的编辑器复制几行代码时,代码中的空格没有被正确识别为“制表符”或“空格”。

不过,解决这个问题其实很简单。我只需要把那段代码里的所有空格都删掉,然后再用正确的制表符重新排版,这样问题就解决了。

14

你有混合的缩进格式(空格和制表符)

在 Notepad++ 中

将制表符设置改为4个空格

进入 设置 -> 首选项 -> 制表符设置 -> 用空格替代

修复当前文件的混合缩进

全选所有内容 CTRL+A

点击 TAB 一次,这样每行都会增加一个缩进

SHIFT + TAB 来去掉多余的缩进,这样会把所有的制表符替换成4个空格。

44

你在代码中混用了制表符和空格,这样不好。具体来说,你的 __init__ 函数里面是用制表符缩进的,而你的 on_data 方法却没有。

这是我在文本编辑器中看到的你的代码截图;我把制表符的宽度设置为8个空格(这是Python的标准),然后选中了文本,这样编辑器就会用连续的横线来显示制表符:

highlighted code with tabs shown as lines

你把编辑器设置成了每四个列显示一个制表符,所以这些方法看起来是对齐的。

运行你的代码,使用:

python -tt scriptname.py

然后修复它找到的所有错误。接着把你的编辑器配置成只用 空格 来缩进;一个好的编辑器在你按 TAB 键的时候会自动插入4个空格。

撰写回答