驱动器文件夹未创建

0 投票
1 回答
34 浏览
提问于 2025-04-14 17:06

我正在尝试用Python在谷歌云盘上创建一个文件夹。我按照文档的说明做了所有步骤,还使用了OAuth2认证。以下是我正在调试的代码

import os
import google.auth
from googleapiclient.discovery import build
from google.oauth2 import service_account
from googleapiclient.http import MediaFileUpload
from googleapiclient.errors import HttpError

SCOPES = ['https://www.googleapis.com/auth/drive']
SERVICE_ACCOUNT_FILE = 'assets/key/key.json'

def Authenticate():
    creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
    print('Authentication Successful')
    return creds

def CreateFolder():
    creds = Authenticate();
    
    try:
        service = build("drive", "v3", credentials=creds);
    
        folder_metadata = {
            "name" : "AutoUpload",
            "mimeType": "application/vnd.google-apps.folder",
        }
        folder = service.files().create(body=folder_metadata, fields="id").execute()
        print(f'Folder created successfully! Folder ID: "{folder.get("id")}".')
        return folder.get("id")
    
    except HttpError as error:
        print(f'An error occured: {error}')
        return None
CreateFolder();

在调试过程中,我得到了预期的结果,比如认证成功,甚至还拿到了文件夹的ID。但是检查我的云盘时,根本找不到这个文件夹。即使我直接在云盘上搜索这个文件夹,它似乎也不在。请问可能是什么问题呢?

1 个回答

0

回答:你在个人云盘里看不到文件,是因为你上传的地方不对。

你设置的元数据

folder_metadata = {
        "name" : "AutoUpload",
        "mimeType": "application/vnd.google-apps.folder",
    }

显示你正在创建一个文件夹,并把它的类型设置为文件夹。你并没有设置具体的目录,所以文件会被放到当前登录用户的根目录里。

因为你使用的是服务账号

creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)

所以文件会被上传到服务账号的谷歌云盘里。

你可以通过执行 files.list 来查看这个情况

folder = service.files().list().execute()

如果你想把文件上传到你的个人云盘里,你需要先把一个文件夹分享给服务账号,然后在元数据里把父目录设置为你个人账户中那个文件夹的目录。

撰写回答