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

用Python导入并保存公开Google Sheets导出的CSV文件

问题修复方案

原代码核心错误点

  • urllib2.urlopen(url) 返回的是字节流对象,csv.reader 要求传入文本迭代对象,直接传入会触发类型不匹配报错
  • csv.reader 迭代返回的row是列表格式,f.write()仅支持写入字符串,直接写入列表会触发类型错误
  • f.close() 写在for循环内部,第一次循环执行后文件就被关闭,后续行无法写入;且with语法会自动管理文件关闭,手动调用属于多余操作
  • 额外冗余问题:无需额外用csv模块解析,只要请求到CSV的文本内容直接写入文件即可,反而能减少不必要的解析开销

可用修复代码

方案1:精简版(无需csv模块,直接保存原始CSV内容)

import urllib.request as urllib2

url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vSsbo0nGQZsYG0kEUC2dZnml_nIOp6q_KnhW8UmGQ39wafmWZQKg9Sb0u4ivBnXt3xrbJgBghpN6rNB/pub?gid=1242503396&single=true&output=csv'
response = urllib2.urlopen(url)
# 把字节流解码为UTF-8文本
csv_content = response.read().decode('utf-8')

with open("My_List.csv", "w", newline="", encoding="UTF-8") as f:
    f.write(csv_content)

方案2:如果确实需要用csv模块读写(比如要中途修改行内容)

import csv
import urllib.request as urllib2
from io import TextIOWrapper

url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vSsbo0nGQZsYG0kEUC2dZnml_nIOp6q_KnhW8UmGQ39wafmWZQKg9Sb0u4ivBnXt3xrbJgBghpN6rNB/pub?gid=1242503396&single=true&output=csv'
response = urllib2.urlopen(url)
# 把字节流包装为文本流给csv.reader使用
cr = csv.reader(TextIOWrapper(response, encoding='utf-8'))

with open("My_List.csv", "w+", newline="", encoding="UTF-8") as f:
    writer = csv.writer(f)
    writer.writerows(cr)

内容的提问来源于stack exchange,提问作者Digital Farmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:39:05