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

Python循环输出保存CSV失败:writerows()参数错误排查

解决Python写入CSV时的TypeError问题

错误原因

你调用writerows()时直接传入了5个独立参数(推文ID、创建时间等),但这个方法只接受一个参数——一个包含多行数据的可迭代对象(比如每个元素是一行数据的列表或元组)。

修正方案

方案1:逐行写入(用writerow())

用writerow()(注意是单数)处理单条推文,把每个推文的5个字段打包成一个列表/元组,再传给方法:

import csv

# 打开文件,指定utf-8编码避免乱码,newline=''防止空行
with open('tweets.csv', 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.writer(csv_file)
    # 先写入表头
    writer.writerow(['推文ID', '创建时间', '用户名', '语言', '文本'])
    # 遍历数据集写入每一行
    for tweet in tweets:
        # 将当前推文的字段打包成列表
        current_row = [tweet.id, tweet.created_at, tweet.username, tweet.lang, tweet.text]
        writer.writerow(current_row)

方案2:批量写入(用writerows())

如果想一次性写入所有数据,先把所有行(包括表头)收集到一个大列表里,再传给writerows():

import csv

# 初始化列表存储所有行数据
all_rows = []
# 添加表头
all_rows.append(['推文ID', '创建时间', '用户名', '语言', '文本'])
# 遍历数据集收集每一行
for tweet in tweets:
    all_rows.append([tweet.id, tweet.created_at, tweet.username, tweet.lang, tweet.text])

# 写入文件
with open('tweets.csv', 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerows(all_rows)  # 传入包含所有行的列表,符合参数要求

关键注意点

  • 区分writerow()和writerows():前者写单行,参数是单个列表/元组;后者写多行,参数是包含多个列表/元组的可迭代对象。
  • 必须指定encoding='utf-8',否则推文里的特殊字符或非英语内容容易乱码。
  • 加上newline=''是csv模块的官方推荐写法,能避免Windows系统下生成的CSV出现额外空行。

内容的提问来源于stack exchange,提问作者Giuse Esse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:05:33