【问题标题】:Is there a way to save a csv as a new csv without overwriting the old one?有没有办法将 csv 保存为新的 csv 而不会覆盖旧的?
【发布时间】:2020-09-28 00:45:08
【问题描述】:

我正在抓取 subreddit 的 cmets,并希望使用 pandas 将它们保存在 csv 文件中。我能够将所有帖子中的 cmets 保存到一个 csv 文件中。但是,我想将每个帖子的 cmets 保存在自己的 csv 中。使用 for 循环,它只是覆盖了之前的 csv。

是否有使用新名称保存 csv 或不覆盖的功能?我在 python 中使用熊猫。 下面是我的方法。

  #Retrieve Comments
  def comments(self,posts,reddit):

    '''Method scrapes all first level comments, then all second level comments, etc'''

    for id in posts.id:
      all_comments = []
      all_comments.clear() #just to be sure
      sub = reddit.submission(id=id)
      sub.comments.replace_more(limit=0)

      for comment in sub.comments.list():
        all_comments.append(comment.body)

      all_comments = pd.DataFrame(all_comments,columns=['Comments'])

      #*****Path to Store CSV*****
      all_comments.to_csv(r'C:\Users\osama\Desktop\.csv')

    return

【问题讨论】:

  • 您希望文件名是什么?

标签: python pandas csv web-scraping reddit


【解决方案1】:
for index, id in enumerate(posts.id):
    # ...
    all_comments.to_csv(rf'C:\Users\osama\Desktop\{index}.csv')

它将文件保存为 0.csv、1.csv、2.csv 等。

或者:

for post in posts:
    id = post.id
    # ...
    all_comments.to_csv(rf'C:\Users\osama\Desktop\{post.title}.csv')

我认为第二个选项应该适用于 praw (我可以看到你正在使用它)。它应该以帖子标题命名文件。

【讨论】:

    最近更新 更多