Je suis débutant dans python
,
J'ai cette erreur:
Error :
def on_data(self,data):
^
IdentationError : unindent does not match any outer indentation level
Je code avec notepad++
dans windows 8.1
. Je ne comprends pas pourquoi j'ai cette erreur, j'ai fait attention aux onglets et à l'espace.
Je veux sauvegarder des données dans self.file
Voici mon 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()
Vous mélangez des onglets et des espaces. Ne fais pas ça. Plus précisément, le corps de la fonction __init__
est indenté avec des onglets alors que votre méthode on_data
ne l’est pas.
Voici une capture d'écran de votre code dans mon éditeur de texte; J'ai réglé la tabulation sur 8 espaces (c'est ce que Python utilise) et sélectionné le texte, ce qui oblige l'éditeur à afficher des tabulations avec des lignes horizontales continues:
Votre éditeur est configuré pour développer des onglets extensibles à la quatrième colonne, de sorte que les méthodes apparaissent pour s'aligner.
Exécutez votre code avec:
python -tt scriptname.py
et réparer toutes les erreurs trouvées. Configurez ensuite votre éditeur pour utiliser uniquement des espaces pour l'indentation; un bon éditeur insérera 4 espaces à chaque fois que vous utiliserez le TAB clé.
Sur notepad ++, si vous obtenez cette erreur, ctrl + a, appuyez une fois sur le bouton TAB. Des onglets seront ajoutés partout dans votre code, puis utilisez les touches Maj + tab pour supprimer l’onglet supplémentaire que vous venez d’ajouter. Il va changer tous vos "onglets" à 4 espaces. Bien sûr, allez dans Paramètres -> Préférences -> Onglet Paramètres -> Remplacer par des espaces. Les futurs onglets seront désormais de 4 espaces.
J'ai eu le même problème plusieurs fois. C'est arrivé surtout quand j'ai essayé de coller quelques lignes de code à partir d'un éditeur en ligne, les espaces ne sont pas enregistrés correctement en tant que "onglets" ou "espaces".
Cependant, le correctif était assez simple. Il me suffisait de supprimer l'espacement sur toutes les lignes de code de cet ensemble spécifique et de l'espacer correctement avec les onglets. Cela a résolu mon problème.
Python IndentationError unindent ne correspond à aucun niveau d'indentation externe
# usr/bin/bash -tt
ou
# usr/bin/python -tt