【发布时间】:2017-05-21 17:46:24
【问题描述】:
目标:我想为每 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
【问题讨论】: