![](/img/trans.png)
[英]Upload a Pandas DataFrame as Excel file directly to Google Drive using PyDrive
[英]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.