无法将Google Drive共享文件夹导入Google Colab的问题求助
解决Google Drive文件夹通过gdown导入Colab时的访问拒绝问题
方案一:手动绕开病毒扫描验证(适合单个/少量文件)
Google会对部分文件强制病毒扫描,导致gdown无法自动获取文件链接。你可以先在浏览器打开文件夹内的文件(比如错误提示里的文件链接),手动完成验证,之后用文件ID单独下载:
import gdown # 替换为目标文件的ID(可从文件链接或错误提示中提取) file_id = "1SBHBGrwPYgqeNVOfnD6yLMN15Acos7BQ" gdown.download(f"https://drive.google.com/uc?id={file_id}")
如果文件夹内文件较多,可先获取所有文件ID,再批量执行下载操作。
方案二:用Google Drive API授权访问(稳定且安全,适合多用户共享)
这个方法能让Colab仅访问指定共享文件夹,不会触及你的整个Drive:
- 去Google Cloud控制台创建项目,启用Drive API,生成服务账号密钥(JSON格式)。
- 将服务账号的邮箱地址添加为目标文件夹的共享成员(权限设为查看/编辑均可)。
- 在Colab中执行以下代码:
from pydrive2.auth import GoogleAuth from pydrive2.drive import GoogleDrive from google.colab import files # 上传你的服务账号密钥JSON文件 uploaded = files.upload() # 配置认证 gauth = GoogleAuth() gauth.service_account_file = list(uploaded.keys())[0] gauth.ServiceAuth() drive = GoogleDrive(gauth) # 替换为你的目标文件夹ID(从链接中提取:1BHpCP_P-x0jQ2ukEFktaeoD_5VkHAez_) folder_id = "1BHpCP_P-x0jQ2ukEFktaeoD_5VkHAez_" # 获取文件夹内所有文件 file_list = drive.ListFile({'q': f"'{folder_id}' in parents and trashed=false"}).GetList() # 批量下载文件 for file in file_list: print(f"正在下载 {file['title']}...") file.GetContentFile(file['title'])
多用户使用时,只需共享Colab笔记本和服务账号密钥(或把密钥存到安全位置让用户自行加载)即可,完全不会暴露你的整个Drive。
方案三:压缩文件夹后下载(操作简单)
把目标文件夹压缩成ZIP包,能降低病毒扫描触发概率,操作步骤:
- 在Google Drive中右键点击目标文件夹,选择「压缩为ZIP文件」。
- 获取ZIP文件的ID,用gdown下载并解压:
import gdown import zipfile # 替换为你的ZIP文件ID zip_file_id = "替换为ZIP文件的ID" gdown.download(f"https://drive.google.com/uc?id={zip_file_id}") # 解压ZIP包 with zipfile.ZipFile("文件名.zip", 'r') as zip_ref: zip_ref.extractall()
内容的提问来源于stack exchange,提问作者Vishwa Ramkumar
相关产品推荐
相关产品推荐

