python - 如何使用 python 中的请求将大文件上传到谷歌驱动器?
问题描述
我有使用我的访问令牌和请求将我的档案上传到 Google Drive 的代码,但是如果文件大于 512MB,它将失败并出现退出代码MemoryError,所以我正在寻找一种方法来修复这个错误并上传一个文件大于 512MB。我已经尝试找到解决方案,但没有找到任何可以使用访问令牌的地方。
import os
import json
import requests
import ntpath
import oauth2
import httplib2
import oauth2client
from contextlib import closing
from googleapiclient.discovery import build
from oauth2client.client import GoogleCredentials
_CLIENT_ID = 'YOUR_CLIENT_ID'
_CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
_REFRESH_TOKEN = 'YOUR_REFRESH_TOKEN'
_PARENT_FOLDER_ID = 'YOUR_PARENT_FOLDER_ID'
_ARCHIVE_FILE = os.environ['USERPROFILE'] +'\\Desktop\\WobbyChip.zip'
# ====================================================================================
def GetAccessToken(client_id, client_secret, refresh_token):
cred = oauth2client.client.GoogleCredentials(None,client_id,client_secret,refresh_token,None,'https://accounts.google.com/o/oauth2/token',None)
http = cred.authorize(httplib2.Http())
cred.refresh(http)
obj = json.loads(cred.to_json())
_ACCESS_TOKEN = obj['access_token']
return _ACCESS_TOKEN
def UploadFile(local_file, parent_folder_id, access_token,):
headers = {'Authorization': 'Bearer ' +access_token}
para = {
'name': (ntpath.basename(local_file)),
'parents': [parent_folder_id]}
files = {
'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),
'file': open(local_file, 'rb')}
requests.post(
'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart',
headers=headers,
files=files)
# ====================================================================================
if __name__ == '__main__':
UploadFile(_ARCHIVE_FILE, _PARENT_FOLDER_ID, GetAccessToken(_CLIENT_ID, _CLIENT_SECRET, _REFRESH_TOKEN))
解决方案
推荐阅读
- python - 将 keras 预测作为张量图用于张量流
- mysql - if 语句未在 JSP scriptlet 中执行
- java - webview中的批处理事件有可能吗?
- python - pandas.read_feather 得到了一个意想不到的参数 nthreads
- java - How to get week of year and week of month in Jalali (Shamsi) calendar
- c++ - 用 return 语句结束析构函数是否安全?
- azure - Azure Web 作业日志
- angular - 预算中的警告,初始超出最大值
- python - 将自制包函数导入正确的命名空间
- asp.net-core-mvc - 使用从下拉列表中选择更改数据表中的数据