问题
I'm a beginner in python
,
I have this error :
Error :
def on_data(self,data):
^
IdentationError : unindent does not match any outer indentation level
I code with notepad++
in windows 8.1
. I don't understand why I have this error, I have paid attention about tabs and space.
I want to save data in self.file
Here is my code :
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()
回答1:
You are mixing tabs and spaces. Don't do that. Specifically, the __init__
function body is indented with tabs while your on_data
method is not.
Here is a screenshot of your code in my text editor; I set the tab stop to 8 spaces (which is what Python uses) and selected the text, which causes the editor to display tabs with continuous horizontal lines:
You have your editor set to expanding tabs to every fourth column instead, so the methods appear to line up.
Run your code with:
python -tt scriptname.py
and fix all errors that finds. Then configure your editor to use spaces only for indentation; a good editor will insert 4 spaces every time you use the TAB key.
回答2:
On notepad++ if you get that error just ctrl+a, press the TAB button once, it will add tabs everywhere in your code, then use shift+tab to delete the extra tab you just added. It will change all your "tabs" to 4 spaces. Of course go to Settings -> Preferences -> Tab Settings -> Replace by spaces. Future tabs will now be 4 spaces.
回答3:
I had the same problem quite a few times. It happened especially when i tried to paste a few lines of code from an editor online, the spaces are not registered properly as 'tabs' or 'spaces'.
However the fix was quite simple. I just had to remove the spacing across all the lines of code in that specific set and space it again with the tabs correctly. This fixed my problem.
回答4:
Python IndentationError unindent does not match any outer indentation level
# usr/bin/bash -tt
or
# usr/bin/python -tt
来源:https://stackoverflow.com/questions/26720841/python-indentationerror-unindent-does-not-match-any-outer-indentation-level