驱动器文件夹未创建
我正在尝试用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()
如果你想把文件上传到你的个人云盘里,你需要先把一个文件夹分享给服务账号,然后在元数据里把父目录设置为你个人账户中那个文件夹的目录。