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

求助:使用Python无认证读取共享Google Drive文件夹中多个CSV文件并合并为DataFrame

解决从公开Google Drive文件夹读取并合并文件为DataFrame的问题

首先,你之前遇到的HTTPError 404是因为你的代码把文件夹ID当成了单个文件的ID来处理——https://drive.google.com/uc?export=download这个接口只适用于单个公开文件,没法直接访问文件夹里的内容。而且Google Drive不会直接把公开文件夹暴露成可以用glob直接遍历的文件系统,所以得换个思路来实现无认证读取公开文件夹的需求。

下面给你两个可行的无认证方案:

方案一:使用gdown库(推荐,稳定可靠)

gdown是专门用来下载Google Drive公开文件/文件夹的工具,不需要任何认证,只要目标文件夹是公开可访问的(设置为“知道链接的任何人都可以查看”)。

步骤:

  1. 先安装gdown:
pip install gdown
  1. 编写代码下载文件夹并合并所有CSV文件:
import gdown
import pandas as pd
import os
from glob import glob

# 你的公开Google Drive文件夹URL
folder_url = 'https://drive.google.com/drive/folders/1_Hwl0tm6rfechhTF-YGVsOA0cbzu4jUd'
# 提取文件夹ID(URL最后一段的字符串)
folder_id = folder_url.split('/')[-2]

# 设置保存文件夹的路径(可以自定义)
save_dir = './gdrive_files'
os.makedirs(save_dir, exist_ok=True)

# 下载整个公开文件夹
gdown.download_folder(id=folder_id, output=save_dir, quiet=False)

# 遍历所有CSV文件并合并成DataFrame
csv_files = glob(os.path.join(save_dir, '*.csv'))
df_list = []
for file in csv_files:
    df = pd.read_csv(file)
    df_list.append(df)

# 合并所有DataFrame
merged_df = pd.concat(df_list, ignore_index=True)
print(merged_df.head())

方案二:解析Google Drive公开文件夹网页(无需额外库,但可能不稳定)

如果不想安装第三方库,可以通过解析Google Drive公开文件夹的网页HTML来获取文件的下载链接,不过这种方法依赖Google的网页结构,未来可能会失效。

代码示例:

import requests
from bs4 import BeautifulSoup
import pandas as pd
from urllib.parse import urljoin

folder_url = 'https://drive.google.com/drive/folders/1_Hwl0tm6rfechhTF-YGVsOA0cbzu4jUd'

# 请求文件夹网页
response = requests.get(folder_url)
soup = BeautifulSoup(response.text, 'html.parser')

# 查找所有文件的下载链接(针对公开文件夹的结构)
file_links = []
for a_tag in soup.find_all('a', {'class': 'Q5txwe'}):
    file_id = a_tag.get('href').split('/')[-2]
    # 构造单个文件的直接下载链接
    download_url = f'https://drive.google.com/uc?export=download&id={file_id}'
    file_links.append(download_url)

# 读取并合并所有文件
df_list = []
for link in file_links:
    try:
        df = pd.read_csv(link)
        df_list.append(df)
    except Exception as e:
        print(f"读取文件失败:{link},错误:{e}")

merged_df = pd.concat(df_list, ignore_index=True)
print(merged_df.head())

注意事项:

  • 确保你的Google Drive文件夹确实设置为公开可访问(共享权限是“知道链接的任何人都可以查看”),否则无认证方案都无法工作。
  • 方案一的gdown会自动处理文件的下载逻辑,包括大文件的验证,比方案二更稳定。

内容的提问来源于stack exchange,提问作者George Papadopoulos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 03:17:30