IndentationError运行python脚本

时间:2016-10-06 19:56:46

标签: python

我是python的新手,我试图运行这个脚本,但在这部分中不断出现缩进错误:

while (time.time()-self.time) < self.limit

我试图以不同的方式删除所有缩进然后ree-indent但似乎没有任何工作。有没有人有想法?我正在使用Spyder来运行它。

start_time = time.time() #grabs the system time
keyword_list = ['twitter'] #track list

from pymongo import MongoClient
import json

class listener(StreamListener):

    def __init__(self, start_time, time_limit=60):

        self.time = start_time
        self.limit = time_limit

def on_data(self, data):

while (time.time()-self.time) < self.limit:
    try:

    client = MongoClient('localhost', 27017)
    db = client['twitter_db']
    collection = db['twitter_collection']
    tweet = json.loads(data)
    collection.insert(tweet)

    return True


    except BaseException, e:
    print 'failed ondata,', str(e)
    time.sleep(5)
    pass

exit()

def on_error(self, status):
print statuses

2 个答案:

答案 0 :(得分:0)

您的类的方法必须在class语句下缩进,并且方法的主体必须在def行下缩进。 tryexcept块的主体必须在这些语句下缩进。

start_time = time.time() #grabs the system time
keyword_list = ['twitter'] #track list

from pymongo import MongoClient
import json

class listener(StreamListener):

    def __init__(self, start_time, time_limit=60):

        self.time = start_time
        self.limit = time_limit

    def on_data(self, data):

        while (time.time()-self.time) < self.limit:
            try:
                client = MongoClient('localhost', 27017)
                db = client['twitter_db']
                collection = db['twitter_collection']
                tweet = json.loads(data)
                collection.insert(tweet)
                return True

            except BaseException, e:
                print 'failed ondata,', str(e)
                time.sleep(5)
                exit()

    def on_error(self, status):
        print statuses

答案 1 :(得分:0)

您需要修复while条件语句的语法。

首先,正如其他几个人所提到的那样&lt不是python运算符。你也不想要一个分号。正确的语法是while (time.time()-self.time) < self.limit:

分号在任何python代码中都没有特别必要。它仅在特定情况下偶尔使用,如果多行语句在一行上,则更容易阅读。但是,这些语句不应包含whileiffor等关键字。现在(在学习python时),我建议完全避免使用分号。

最后,(这可能是stackOverflow无法正确格式化)您的函数on_dataon_error有不正确的缩进。在python 2.7中强制实践并且在3.x中强制要求不要混合制表符和空格(实际上只是使用空格)以及缩进规则,请参阅the official style guidewikipedia's explanation