2

我正在使用简单的代码:

import urllib2
response = urllib2.urlopen("http://www.mysite.com/getfile/4355")
output = open('myfile.zip','wb')
output.write(response.read())
output.close()

Web 服务器是 IIS + ASP.NET MVC 4 它返回 FileResult 包装一个带有“application/octet-stream”内容类型的 zip 文件。

问题是下载的 zip 文件损坏了 - 只有 4.1kB 大小,它必须是 24kB。当我直接在网络浏览器中输入网址时 - 它下载并打开正常。

您能否建议我的 Python 代码有什么问题?

编辑

尝试了其他两种方法 - 结果相同。

    import urllib
    urllib.urlretrieve(url, targetFile)

    h = httplib2.Http(".cache")
    response, content = h.request(url)
    with open(targetFile, 'wb') as f:
        f.write(content)
4

3 回答 3

1

这是一个愚蠢的问题,但无论如何:我的控制器上有 [Authorize] 属性,因此无法执行匿名请求。

删除它只是让我下载文件。

不管怎么说,还是要谢谢你。

于 2012-12-16T18:34:06.747 回答
0

供将来参考,在 py3k 中,您只需要使用urllib.request.urlretrieve(the_url, the_filename)来下载如下文件:

import urllib.request

url = 'http://www.example.com/the-file.zip'
urllib.request.urlretrieve(url, 'filename.zip')
于 2012-12-16T18:14:32.373 回答
0

看看 python 'requests' 模块。你可以点安装它。示例代码是:

>>>import requests
>>>req_obj = requests.get("http://www.myexample.com/myfile.zip")
>>>print len(req_obj)
203456

有关 API 的更多信息,请参见此处...

于 2012-12-16T17:10:06.863 回答