You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Colab中的文件上传至Google Drive指定文件夹?

问题分析

你之前的代码drive.ListFile(...).GetList()返回的是目标文件夹下的文件列表,而不是文件夹对象本身,所以自然没有upload()方法。要直接上传图片到指定Google Drive文件夹,我们需要用PyDrive库的CreateFile()方法创建关联目标文件夹的文件对象,再执行上传操作。

实现步骤(Colab环境)

首先确保你已经完成Google Drive的授权连接(Colab常用两种授权方式,选其一即可):

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

# 方式1:通用本地授权(Colab可能需要弹出授权窗口)
gauth = GoogleAuth()
gauth.LocalWebserverAuth()

# 方式2:Colab专属授权(更稳定)
# from google.colab import auth
# auth.authenticate_user()
# from oauth2client.client import GoogleCredentials
# gauth = GoogleAuth()
# gauth.credentials = GoogleCredentials.get_application_default()

drive = GoogleDrive(gauth)

接下来是单张图片上传的核心代码:

# 替换成你的目标文件夹ID
target_folder_id = '1QYaM1vaUvdzbdsfWbsolncz1xc2pgnpextuP'
# 替换成Colab中本地图片的路径(比如你上传到Colab的图片路径)
local_image_path = '/content/my_test_image.jpg'

# 创建关联目标文件夹的Drive文件对象
upload_file = drive.CreateFile({
    'title': 'uploaded_image.jpg',  # 上传后在Drive显示的文件名
    'parents': [{'id': target_folder_id}]  # 指定父文件夹ID
})

# 加载本地图片内容
upload_file.SetContentFile(local_image_path)
# 执行上传
upload_file.Upload()

print(f"图片上传成功!Drive文件ID: {upload_file.get('id')}")

批量上传图片示例

如果需要上传多张图片,可以用循环简化操作:

import os

# 本地图片所在目录(Colab中的路径)
image_dir = '/content/images/'
# 目标文件夹ID
target_folder_id = '1QYaM1vaUvdzbdsfWbsolncz1xc2pgnpextuP'

for filename in os.listdir(image_dir):
    # 过滤图片格式(可根据需求调整)
    if filename.lower().endswith(('.jpg', '.jpeg', '.png', '.gif')):
        local_path = os.path.join(image_dir, filename)
        # 创建文件对象并上传
        drive_file = drive.CreateFile({
            'title': filename,
            'parents': [{'id': target_folder_id}]
        })
        drive_file.SetContentFile(local_path)
        drive_file.Upload()
        print(f"已上传:{filename}")

关键说明

  • 不要混淆「获取文件夹内文件列表」和「操作文件夹对象」:drive.ListFile()是用来查询文件夹内的现有文件,而上传需要直接创建关联目标文件夹的新文件对象。
  • 上传时的parents参数必须是包含目标文件夹ID的字典列表,这是让文件归属到指定文件夹的核心设置。

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

火山引擎 最新活动