如何解决Google驱动器Python上传文件不起作用
我正在使用以下代码,正在生成fileID,但未上传文件。我尝试调试,但它显示的输出与代码输出相同。我已将服务帐户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,fields='id').execute()
print('File ID: %s' % file.get('id'))
if __name__ == '__main__':
uploadGdrive()
解决方法
服务帐户不是您。服务帐户是虚拟用户,它具有自己的驱动器帐户。它上传的文件归它所有。
您的文件可能已上传到服务帐户驱动器帐户。或者“ 15xc7s-dFnpW6pjtjtUH4kT1BnZ46ffFh”假设服务帐户有权访问该目录。您可以通过执行file.list并查看其当前有权访问的文件来查看此内容。
如果创建的文件成功,它将返回file.id作为响应的一部分,您也可以检查它。
您可以在自己的Google云端硬盘帐户上创建目录,并与服务帐户共享该目录。然后让服务帐户将文件上传到该目录,然后您就可以在自己的帐户中看到它们。上传文件后,您还需要向自己授予权限。查看Permissions.create。
或者,您可以让服务帐户将文件上传到其自己的帐户,然后为您添加对文件的权限,以便您可以看到它。查看Permissions.create。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。