如何在Colab中访问共享Google Drive目录?求更简便方案
在Colab里访问公开共享Google Drive目录的简便办法
你之前用的手动添加快捷方式的方法确实麻烦,每个用户都得自己操作一遍。下面给你几个不用手动操作的简便方案:
方案1:用gdown直接拉取公开目录/文件
只要共享的Drive资源是可查看权限,就能通过共享链接里的ID直接下载,不用挂载整个Drive。
- 先拿到公开目录的共享链接,比如
https://drive.google.com/drive/folders/123abcXYZ?usp=sharing,这里面的123abcXYZ就是目录ID。 - 运行下面的代码就能下载整个目录:
pip install gdown gdown --folder https://drive.google.com/drive/folders/123abcXYZ
或者用Python代码实现:
!pip install gdown import gdown # 替换成你的公开目录链接 url = "https://drive.google.com/drive/folders/123abcXYZ" gdown.download_folder(url, quiet=False)
这个方法的好处就是用户只要运行代码就行,不用手动点快捷方式,适合批量获取公开资源。
方案2:用Drive API直接访问(不用挂载个人Drive)
如果需要遍历目录、按需读取文件这种更灵活的操作,可以直接用Drive API访问公开资源,完全不用挂载用户的个人Drive。
直接运行下面的代码即可:
from googleapiclient.discovery import build from googleapiclient.http import MediaIoBaseDownload import io # 初始化Drive API客户端 drive_service = build('drive', 'v3') # 替换成你的公开目录ID folder_id = '123abcXYZ' # 列出目录里的所有文件 results = drive_service.files().list( q=f"'{folder_id}' in parents and trashed=false", fields="files(id, name)").execute() items = results.get('files', []) # 示例:下载目录里的文件 for item in items: print(f"文件名: {item['name']}, 文件ID: {item['id']}") request = drive_service.files().get_media(fileId=item['id']) fh = io.FileIO(item['name'], 'wb') downloader = MediaIoBaseDownload(fh, request) done = False while done is False: status, done = downloader.next_chunk() print(f"下载进度: {int(status.progress() * 100)}%")
这个方案适合需要对目录里的文件做复杂操作的场景,全程不用碰个人Drive的挂载。
方案3:用rclone挂载公开目录
rclone是个云存储工具,可以把公开的Drive目录直接挂载到Colab的文件系统里,就像访问本地文件夹一样,而且不用用户手动操作。
运行下面的命令:
# 安装rclone !curl https://rclone.org/install.sh | sudo bash # 配置连接公开目录(不用登录个人账号) !rclone config create public_drive drive scope=drive.readonly root_folder_id=123abcXYZ # 创建挂载目录并挂载 !mkdir -p /content/public_drive !rclone mount public_drive: /content/public_drive --daemon --allow-non-empty
之后你就能直接通过/content/public_drive路径访问这个公开目录的内容了,和操作本地文件没区别。
内容的提问来源于stack exchange,提问作者surgbc
相关产品推荐
相关产品推荐

