Python 使用PyDrive将一个巨大的文件上传到Google Drive

Python 使用PyDrive将一个巨大的文件上传到Google Drive,python,google-drive-api,pydrive,Python,Google Drive Api,Pydrive,目前,我正在使用PyDrive将备份(.tar文件)上载到google drive 是否有一个特殊的事情要做这个库上传一个巨大的文件到谷歌驱动器(约5gb)。在Google Drive API文档中,它说我们必须使用可恢复上传 我的问题是,当我尝试发送一个大文件时,脚本执行时没有任何错误,速度非常快,并且文件不会出现在GoogleDrive中。然而,如果我用一个100mb左右的小文件来做这件事,一切都很好 我的代码如下: def upload(self, backupFile, backupFi

目前,我正在使用PyDrive将备份(.tar文件)上载到google drive

是否有一个特殊的事情要做这个库上传一个巨大的文件到谷歌驱动器(约5gb)。在Google Drive API文档中,它说我们必须使用可恢复上传

我的问题是,当我尝试发送一个大文件时,脚本执行时没有任何错误,速度非常快,并且文件不会出现在GoogleDrive中。然而,如果我用一个100mb左右的小文件来做这件事,一切都很好

我的代码如下:

def upload(self, backupFile, backupFileName):

    json_data=open(os.path.join(__location__, 'client_secrets.json'))

    data = json.load(json_data)

    """Email of the Service Account"""
    SERVICE_ACCOUNT_EMAIL = data['client_email']

    """Path to the Service Account's Private Key file"""
    SERVICE_ACCOUNT_PKCS12_FILE_PATH = os.path.join(__location__, 'key.p12')

    f = file(SERVICE_ACCOUNT_PKCS12_FILE_PATH, 'rb')
    key = f.read()
    f.close()

    credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key,
        scope='https://www.googleapis.com/auth/drive', sub='email')
    http = httplib2.Http()
    credentials.authorize(http)

    gauth = GoogleAuth()
    gauth.credentials = credentials

    drive = GoogleDrive(gauth)

    file1 = drive.CreateFile({'title': backupFileName, "parents" : [{"id":"0B7FoN03AUUdZVlNETEtWLS1VTzQ"}]} )  # Create GoogleDriveFile instance with title 'Hello.txt'

    file1.SetContentFile(backupFile);
    file1.Upload()

当我尝试发送一个大文件时,不会返回任何错误。python脚本结束时没有显示任何内容…

某些类型的文件有100MB的限制

尺寸限制

文档:1024000个字符,不考虑页数或 字体大小。如果使用新版本的驱动器(带有红色“new” 按钮),上载转换的文档文件 谷歌文档的格式不能超过50MB。如果使用 驱动器的经典版本,您无法转换 大于10 MB

电子表格:400000个单元格,每张表格最多256列。 上传的电子表格文件已转换为Google 电子表格格式不能大于100 MB,并且需要小于100 MB 每页400000个单元格和256列

有关电子表格大小限制的详细信息所有电子表格限制 上述内容已在新版谷歌表单中删除。 新版Google Sheets应该支持200万个 数据,但请注意,超大电子表格可能有 性能较慢。了解有关切换到新版本的的更多信息 谷歌表单。演示文稿:在谷歌幻灯片中创建的演示文稿 最高可达100 MB。上载的演示文稿文件已转换为 谷歌幻灯片也可以达到50MB

绘画:我们从未见过有人画得太大(但是 那是不敢的)

其他文件:您上载但未转换为Google文档的文件, 每张图纸或幻灯片的格式最多可达5 TB

在Google Drive、Gmail和Google+照片中,每个用户都有15张照片 GB的免费存储空间,也可以购买额外的存储空间


通过将类似object的文件传递给GoogleDriveFile的.content,您可以上传任意大小的文件

file1.content=fileobj

根据我的经验,它一次读8192字节 它首先查找0,2,然后查找0,0,然后在每个 read(8192),它还调用seek(0,2)+1处的read(8192)

因此,必须在对象中放置read()、tell()和seek()方法
这可能来自api的http.py部分,不是答案,但我会避免向驱动器发送大文件。问题太多了。特别是对于一个tar,我会把它分成100MB的块,然后在下载时用cat重新组装。我想你是对的,我可能会用Amazon Glacier。这是一个什么样的答案?任何时候谷歌API返回错误,他们都会在pyDrive上抛出异常。这肯定是pyDrive的一个bug,因为它甚至还没有进入上传部分。