Python IndentationError unindent no coincide con ningún nivel de sangría exterior

Soy un principiante en python ,

Tengo este error:

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

notepad++ con notepad++ en windows 8.1 . No entiendo por qué tengo este error, he prestado atención a las tabs y el espacio.

Quiero guardar datos en self.file

Aquí está mi código:

 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() 

Estás mezclando tabulaciones y espacios. No hagas eso Específicamente, el cuerpo de la función __init__ está sangrado con tabs, mientras que su método on_data no lo está.

Aquí hay una captura de pantalla de su código en mi editor de texto; Establecí la tabulación en 8 espacios (que es lo que utiliza Python) y seleccioné el texto, lo que hace que el editor muestre las tabs con líneas horizontales continuas:

Código resaltado con pestañas mostradas como líneas

Tiene su editor configurado para expandir las tabs a cada cuarta columna en su lugar, por lo que los métodos parecen alinearse.

Ejecuta tu código con:

 python -tt scriptname.py 

y arregla todos los errores que encuentre. Luego configure su editor para usar espacios solo para la sangría; un buen editor insertará 4 espacios cada vez que use la tecla TAB .

En notepad ++ si obtienes ese error, solo presiona ctrl + a, presiona el botón TAB una vez, agregará tabs en todas partes de tu código, luego usa Mayús + tab para eliminar la pestaña adicional que acabas de agregar. Cambiará todas tus “tabs” a 4 espacios. Por supuesto, vaya a Configuración -> Preferencias -> Configuración de pestaña -> Reemplazar por espacios. Las tabs futuras ahora serán 4 espacios.

Tuve el mismo problema unas cuantas veces. Ocurrió especialmente cuando intenté pegar algunas líneas de código de un editor en línea, los espacios no se registran correctamente como “tabs” o “espacios”.

Sin embargo, la solución era bastante simple. Solo tuve que eliminar el espacio entre todas las líneas de código en ese conjunto específico y espaciarlo nuevamente con las tabs correctamente. Esto solucionó mi problema.

Python IndentationError unindent no coincide con ningún nivel de sangría exterior

 # usr/bin/bash -tt 

o

 # usr/bin/python -tt