You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环中如何避免CSV被覆盖,保存每次迭代的JSON为CSV

解决循环中CSV文件被覆盖的问题

你遇到的核心问题是每次循环都使用同一个固定文件名output_file.csv,导致后续迭代的内容直接覆盖之前的文件。只需要给每个CSV文件生成唯一的文件名即可,最直接的方式就是用当前用户的用户名作为文件名的一部分。

修改后的代码

from twarc.client2 import Twarc2
import itertools
import pandas as pd
import json
import numpy as np

# 替换为你的bearer token
t = Twarc2(bearer_token="AAAAAAAAAAAAAAAAAAAAA....WTW")

# 读取用户名列表
list_of_names = np.loadtxt("usernames.txt", dtype="str")

# 提取请求结果中的data部分
def get_data(results):
    return list(itertools.chain(*[result['data'] for result in results]))

user_objects = get_data(t.user_lookup(users=list_of_names, usernames=True))

for user in user_objects:
    following = get_data(t.following(user['id']))
    print(f"User: {user['username']} Follows {len(following)}")

    # 直接将following转为DataFrame,无需先转JSON字符串(简化步骤)
    df = pd.DataFrame(following)
    # 使用用户名作为文件名,避免覆盖
    df.to_csv(f"{user['username']}_following.csv", index=False)

关键修改点说明

  1. 唯一文件名:用f"{user['username']}_following.csv"生成文件名,每个用户的关注列表会保存为类似johndoe_following.csv的独立文件,完全避免覆盖问题。
  2. 简化代码:不需要先把following转成JSON字符串再读回DataFrame,直接用pd.DataFrame(following)就能转换,更高效简洁。
  3. 添加index=False:避免CSV文件中多出不必要的索引列,让输出更干净。

额外注意事项

如果你的用户名列表中存在特殊字符(虽然推特用户名只允许字母、数字、下划线),可以提前对用户名做简单处理,比如替换非法字符:

safe_username = user['username'].replace('/', '_').replace('\\', '_')
df.to_csv(f"{safe_username}_following.csv", index=False)

内容的提问来源于stack exchange,提问作者Camilla Ancona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:50:18