使用pandas read_csv读取谷歌云端CSV失败,但本地读取正常
解决直接读取谷歌云盘CSV文件的ParserError问题
问题还原
用pd.read_csv()直接读取谷歌云盘的共享链接时触发解析错误:
b_merge = pd.read_csv( "https://drive.google.com/file/d/some_file_id", low_memory=False )
错误信息:
ParserError: Error tokenizing data. C error: Expected 90 fields in line 3, saw 217
但把文件下载到本地后用同样代码能正常读取,试过常规跳过行等方案无效。
核心原因
你用的是谷歌云盘的网页预览链接,不是直接指向CSV文件的下载链接。pandas读取的其实是云盘网页的HTML代码,不是真实的CSV数据,自然会解析失败。
解决方案
1. 替换为正确的直接下载链接
把原链接格式从:https://drive.google.com/file/d/some_file_id
改成以下两种格式之一:
- 通用直接下载链接:
https://drive.google.com/uc?id=some_file_id - 若为谷歌表格导出的CSV:
https://drive.google.com/file/d/some_file_id/export?format=csv
修改后的代码示例:
b_merge = pd.read_csv( "https://drive.google.com/uc?id=some_file_id", low_memory=False )
2. 确保文件权限设置正确
在谷歌云盘里把文件权限改成「任何人可查看」,否则pandas无法访问到文件内容。
3. 备选方案:先下载内容再读取
如果上述方法仍有问题,可以用requests先获取文件内容,再传入pandas:
import pandas as pd import requests from io import StringIO # 替换成你的文件ID file_id = "some_file_id" url = f"https://drive.google.com/uc?id={file_id}" # 发起请求获取文件内容 resp = requests.get(url) # 用StringIO包装成可读取的文件对象 csv_content = StringIO(resp.text) # 读取为DataFrame b_merge = pd.read_csv(csv_content, low_memory=False)
验证方法
把修改后的链接复制到浏览器打开,若能直接下载CSV文件,说明链接有效;如果跳转到云盘网页,说明链接格式不对。
内容的提问来源于stack exchange,提问作者HuLu ViCa
相关产品推荐
相关产品推荐

