簡體   English   中英

使用PyDrive將大文件上傳到Google雲端硬盤

[英]Upload a huge file to Google Drive using PyDrive

目前,我正在使用PyDrive將我的備份(.tar文件)上傳到Google驅動器。

此庫有什么特別的事情可以將巨大的文件上傳到Google雲端硬盤(約5GB)。 在Google Drive API文檔中,它說我們必須使用可恢復上傳? https://developers.google.com/drive/web/manage-uploads

我的問題是,當我嘗試發送大文件時,腳本執行得很快,而且沒有任何錯誤,而且速度很快,並且文件沒有出現在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的限制

https://support.google.com/drive/answer/37603?hl=en

大小限制

文件:1,024,000個字符,與頁數或字體大小無關。 如果使用新版雲端硬盤(左側帶有紅色的“新建”按鈕),則已轉換為Google文檔格式的上載文檔文件不能大於50 MB。 如果使用舊版雲端硬盤,則不能轉換大於10 MB的文檔文件。

電子表格:400,000個單元格,每張最多256列。 轉換為Google電子表格格式的已上傳電子表格文件不能大於100 MB,並且必須小於400,000個單元格和每張256列。

有關電子表格大小限制的更多信息,上述所有電子表格限制已在新版Google表格中刪除。 新版本的Google表格可以支持200萬個數據單元,不過請注意,大型電子表格的性能可能會降低。 了解更多有關切換到新版Google表格的信息。 演示文稿:在Google幻燈片中創建的演示文稿最大為100 MB。 上載的演示文稿文件也可以轉換為Google幻燈片,最大為50 MB。

圖紙:我們從未見過有人制作過大的圖紙(但這並不敢)。

其他文件:您上傳但未轉換為Google文檔,表格或幻燈片格式的文件,每個文件的最大容量為5 TB。

在Google雲端硬盤,Gmail和Google+相冊中,每個用戶都有15 GB的免費存儲空間,他們還可以購買其他存儲空間。

您可以通過將類似對象的文件傳遞到GoogleDriveFile的.content來上傳任何大小的文件

file1.content = FileObj文件

根據我的經驗,它首先在ime讀取8192字節,然后先尋找0,2,然后尋找0,0,然后在每次read(8192)之前調用tell(),並且還在seek(0,2)處調用read(8192) +1

因此您必須將read(),tell()和seek()方法放在對象中,這可能來自api的http.py部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM