求助:使用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公开文件/文件夹的工具,不需要任何认证,只要目标文件夹是公开可访问的(设置为“知道链接的任何人都可以查看”)。
步骤:
- 先安装
gdown:
pip install gdown
- 编写代码下载文件夹并合并所有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
相关产品推荐
相关产品推荐

