【问题标题】:Create a new CSV file for every 100 tweets为每 100 条推文创建一个新的 CSV 文件
【发布时间】: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

【问题讨论】:

    标签: python csv twitter


    【解决方案1】:

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

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

    【讨论】:

    • 关于如何改进代码以写入tweet 的任何建议?
    • tweet 组装成字符串后。将 self.output.write(tweet) 放在 if 语句之前。
    • tweet = {some info} self.output.seek(0) self.output.write(tweet)
    • 我根据您的建议尝试了以下代码,但得到了TypeError: expected a string or other character buffer object 也许这不是您的意思?
    • 我使用self.output.seek(0)tweet 转换为字符串。但我仍然收到错误
    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2020-11-23
    • 2020-06-18
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多