2016-07-22 122 views
0

我想從OneDrive位置下載excel文件。我的代碼工作好來獲取文件,但該文件已損壞(我得到一個錯誤消息):使用Python從OneDrive下載Excel文件導致損壞的文件

import urllib2 

data = urllib2.urlopen("enter url here") 
with open('C:\\Video.xlsx', 'wb') as output: 
    output.write(data.read()) 
output.close() 
print "done" 

我使用來賓訪問Excel文件,這樣我就沒有與認證工作。生成的文件似乎是15KB,原始文件是22KB。

+0

如果您在瀏覽器中輸入相同的網址,是否下載或顯示Excel Web界面?在後者的情況下,這基本上是你寫的文件。你應該確保url直接指向二進制文件。另外,請確保您不需要先進行身份驗證。總之,看一下'data'的內容,這可能會清除一兩件事。 –

+0

如果你打開你在文本編輯器中下載的文件,你會看到一個帶有JavaScript的HTML頁面嗎? –

+0

@Kristof,我得到了Excel界面。我不知道如何得到一個二進制文件的鏈接..OneDrive是存儲這些東西時有點莫名其妙。我基本上得到了一個鏈接(這不是一個真正的鏈接):https://my.sharepoint.com/personal/myname/layouts/15/WopiFrame.aspx?guestaccesstoken = abunchofcharacters = view – LKMS

回答

1

您不能直接使用URL從OneDrive下載Excel文件。即使你沒有任何授權的情況下共享文件,你也可能會得到一個到中間HTML頁面的鏈接,而不是Excel二進制本身。

要從OneDrive下載項目,您首先需要進行身份驗證,然後傳遞您之後的文件位置。您可能會想要使用OneDrive REST API。有關如何執行此操作的詳細信息,請參閱OneDrive's SDK for Python GitHub頁面上的一些示例以幫助您入門。