每100条推文创建一个新的CSV文件

时间:2017-05-21 17:46:24

标签: python csv twitter

目标:我想为每100条推文创建一个新的csv文件。所以,一旦我收集了100条推文,我希望csv文件关闭,我想要一个新的CSV文件打开并收集另外100条推文。

问题:我每个csv文件只收到1条推文。也就是说,收集1条推文并关闭csv文件,并使用1条推文再次创建新的csv文件,然后该过程继续。

我试过谷歌搜索并更改我的代码,但它仍然做同样的事情。任何见解都会有所帮助。谢谢!

class StdOutListener(StreamListener):

    def __init__(self, api=None,fprefix = 'streamer'):
        super(StdOutListener, self).__init__()
        self.num_tweets = 0
        self.fprefix = fprefix
        self.output  = open(fprefix + '.' 
                            + time.strftime('%Y%m%d-%H%M%S') + '.csv', 'w')
        self.writer = csv.writer(self.output, delimiter=' ', quotechar='|')

    def on_data(self, data):
        t = json.loads(data)
        tweet_id = t['id_str'] 
        dt = t['created_at']  
        user_name = t['user']['name']
        text = t['text']
        created = datetime.datetime.strptime(dt, '%a %b %d %H:%M:%S +0000 %Y')
        tweet = {'tweet_id':tweet_id,'created_at':created,'user_name':user_name,'user_screenName ':user_screenName ,'user_id': user_id, 'user_location': user_location, 'text':text,'expanded_url':expanded_url}

        self.num_tweets += 1
        if self.num_tweets >= 100:
            self.output.write(data + "\n")
            collection.save(tweet)
            self.output.close()
            self.output = open('/Users/edwinreyes/Desktop/' + self.fprefix + '.' 
                               + time.strftime('%Y%m%d-%H%M%S') + '.csv', 'w')
            self.counter = 0

        return

1 个答案:

答案 0 :(得分:0)

除非tweet等于num_tweets,否则您不会将100写入任何内容。

它写入文件的唯一时间是在if语句块中。