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

如何在Google Colaboratory中获取新建文件夹的ID及公开链接?

获取Google Colab中新建文件夹的Drive ID及公开链接

你的代码用basename提取的只是文件夹名称,这是因为Colab挂载的Drive路径是本地文件系统的映射,无法通过普通文件操作获取Google Drive的文件夹ID——必须借助Drive API读取文件元数据才能拿到ID。下面是两种可行的解决方案:

方法一:使用PyDrive库(简洁易用)

PyDrive是Google Drive API的Python封装,能直接操作Drive的文件元数据。

1. 安装依赖并初始化认证

!pip install -U pydrive
from google.colab import auth
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from oauth2client.client import GoogleCredentials

# 完成Drive认证
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

2. 创建文件夹并获取ID+公开链接

from google.colab import drive as colab_drive
import os

# 挂载Drive到Colab
colab_drive.mount('/content/drive')
base_dir = '/content/drive/MyDrive/Envato Share/'
os.chdir(base_dir)

folder_name = input("Enter the folder name: ")
folder_path = os.path.join(base_dir, folder_name)

# 创建文件夹(不存在则创建)
if not os.path.exists(folder_path):
    os.makedirs(folder_path)

# 搜索目标文件夹的元数据(匹配名称+父文件夹+类型)
parent_folder = base_dir.split('/drive/MyDrive/')[-1].rstrip('/')
query = f"title='{folder_name}' and '{parent_folder}' in parents and mimeType='application/vnd.google-apps.folder'"
file_list = drive.ListFile({'q': query}).GetList()

if file_list:
    folder_id = file_list[0]['id']
    print(f"文件夹ID: {folder_id}")
    # 生成公开访问链接(已设为公开状态时可用)
    public_link = f"https://drive.google.com/drive/folders/{folder_id}?usp=sharing"
    print(f"公开访问链接: {public_link}")
else:
    print("未找到对应文件夹,请检查名称是否唯一或路径是否正确")

方法二:直接调用Drive REST API

如果不想依赖第三方库,可直接发送API请求获取ID:

1. 获取访问令牌

from google.colab import auth
import requests

auth.authenticate_user()
# 提取Google账号的访问令牌
access_token = !gcloud auth print-access-token
access_token = access_token[0]
headers = {'Authorization': f'Bearer {access_token}'}

2. 查询文件夹ID并生成链接

from google.colab import drive as colab_drive
import os

colab_drive.mount('/content/drive')
base_dir = '/content/drive/MyDrive/Envato Share/'
folder_name = input("Enter the folder name: ")
folder_path = os.path.join(base_dir, folder_name)

if not os.path.exists(folder_path):
    os.makedirs(folder_path)

# 先获取父文件夹(Envato Share)的ID
parent_query = f"name='{os.path.basename(base_dir.rstrip('/'))}' and 'root' in parents and mimeType='application/vnd.google-apps.folder'"
parent_url = f"https://www.googleapis.com/drive/v3/files?q={parent_query}&fields=files(id)"
parent_res = requests.get(parent_url, headers=headers).json()

if parent_res.get('files'):
    parent_id = parent_res['files'][0]['id']
    # 查询目标文件夹的ID
    folder_query = f"name='{folder_name}' and '{parent_id}' in parents and mimeType='application/vnd.google-apps.folder'"
    folder_url = f"https://www.googleapis.com/drive/v3/files?q={folder_query}&fields=files(id)"
    folder_res = requests.get(folder_url, headers=headers).json()

    if folder_res.get('files'):
        folder_id = folder_res['files'][0]['id']
        print(f"文件夹ID: {folder_id}")
        public_link = f"https://drive.google.com/drive/folders/{folder_id}?usp=sharing"
        print(f"公开访问链接: {public_link}")
    else:
        print("未找到目标文件夹")
else:
    print("未找到父文件夹Envato Share,请检查路径是否正确")

注意事项

  • 如果存在同名文件夹,上述代码会返回第一个匹配的结果,建议确保文件夹名称唯一,避免混淆。
  • 确保你的Google账号已完成Colab的Drive认证,且有权限访问目标文件夹。

内容的提问来源于stack exchange,提问作者MD. Muinul Islam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:53:22