Google 驱动器 Python 无法上传文件

Google drive Python to upload file not working

我正在使用下面的代码,正在生成文件 ID,但文件没有上传。我试过调试,但它显示与代码输出相同的输出。我已将服务帐户 json 文件和 test.csv 放在放置 python 代码的文件夹中。

from google.oauth2 import service_account
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload




def uploadGdrive():
    SCOPES = ['https://www.googleapis.com/auth/drive.file']
    SERVICE_ACCOUNT_FILE = './iron-tea-266706-8a1f9ee69710.json'
    folder_id = '15xc7s-dFnpW6pjtjtUH4kT1BnZ46ffFh'
    #file_id = '1IcbtXGW1ZMmv64SqqXJZCsFrwMlE3NiQcDZR98XuFX8'
    file_location='./test.csv'

    creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
    service = build('drive', 'v3', credentials=creds)
    file_metadata = {
        'name': 'Master Summary',
        'mimeType': 'application/vnd.google-apps.spreadsheet'
    }

    media = MediaFileUpload(
        '{}'.format(file_location),
        mimetype='text/csv',
        resumable=True)

    #This is to update existing file
    #file = service.files().update(body=file_metadata,media_body=media,fileId='{}'.format(file_id)).execute()
    #print(file.get('id'))

    #this is to create new  file
    file = service.files().create(body=file_metadata,
                                   media_body=media,
                                   fields='id').execute()
    print('File ID: %s' % file.get('id'))

if __name__ == '__main__':
    uploadGdrive()

服务帐户不是您。服务帐户是虚拟用户,它有自己的驱动器帐户。它上传的文件归它所有。

您的文件可能正在上传到服务帐户驱动器帐户。或者“15xc7s-dFnpW6pjtjtUH4kT1BnZ46ffFh”假设服务帐户有权写入该目录。您可以通过执行 file.list 并查看它当前可以访问哪些文件来查看。

如果要创建的文件成功,它将 return 一个 file.id 作为响应的一部分,您也可以检查它。

您可以自己创建目录 google 驱动器帐户与服务帐户共享该目录。然后让服务帐户将文件上传到该目录,然后您就可以在自己的帐户上看到它们。您还需要在上传文件时授予自己对该文件的权限。查看 permissions.create.

或者,您可以让服务帐户将文件上传到它自己的帐户,然后为您添加对文件的权限,以便您能够查看它。查看 permissions.create.