目标:我想为每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
答案 0 :(得分:0)
除非tweet
等于num_tweets
,否则您不会将100
写入任何内容。
它写入文件的唯一时间是在if语句块中。