2016-07-22 325 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页面上的一些示例以帮助您入门。