Python3.3的urllib.request无法下载文件

Python3.3的urllib.request无法下载文件,python,python-3.x,download,Python,Python 3.x,Download,我想用python下载一个大的归档文件并保存它,但urllib不适合我。这是我的代码: import urllib urllib.request("http://www.petercollingridge.co.uk/sites/files/peter/particle_tutorial_7.txt") 请注意,我在本例中使用的链接不是一个大的归档文件。我只是举个例子。它直接链接到一个.txt文件,所以应该可以工作。我得到这个错误: Traceback (most re

我想用python下载一个大的归档文件并保存它,但urllib不适合我。这是我的代码:

    import urllib
    urllib.request("http://www.petercollingridge.co.uk/sites/files/peter/particle_tutorial_7.txt")
请注意,我在本例中使用的链接不是一个大的归档文件。我只是举个例子。它直接链接到一个.txt文件,所以应该可以工作。我得到这个错误:

    Traceback (most recent call last):
    File "<pyshell#11>", line 1, in <module>
    urllib.request("http://www.petercollingridge.co.uk/sites/files/peter/particle_tutorial_7.txt")
    AttributeError: 'module' object has no attribute 'request'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
urllib.request(“http://www.petercollingridge.co.uk/sites/files/peter/particle_tutorial_7.txt")
AttributeError:“模块”对象没有属性“请求”
在我看来,urllib不知何故被破坏了,缺少了“request”方法。我正在使用Python 3.3。我应该使用另一个模块还是它实际上是一个Python问题?

不,它没有损坏。非常清楚这是如何工作的:

import urllib.request
req = urllib.request.urlopen('http://www.google.com')
data = req.read()
编辑:如果需要将文件直接写入磁盘而不是处理数据,请使用
urlretrieve

urllib.request.urlretrieve('http://example.com/big.zip', 'file/on/disk.zip')

在Python 3.0中,urllib2模块已被拆分为几个模块,分别命名为urllib.request和urllib.error。将源转换为3时,2to3工具将自动调整导入

from urllib.request import urlopen

data = urlopen(r"http://www.petercollingridge.co.uk/sites/files/peter/particle_tutorial_7.txt")

print(data)

要将url下载到文件中,您可以使用:


注意:“我想用python下载一个大的归档文件并保存它”<如果要下载可能不适合内存的大文件,则code>req.read()不合适。您可以使用
urlretrieve
,根据手册,将来某个时候可能会被弃用。是否有一种未来安全的方式可以直接保存到文件中?可能重复的
urlretrieve
是一种遗留实现,在未来的版本中可能会被弃用:@ccpizza:我已经看到这个警告将近10年了,措辞是相同的:“可能会被弃用”与“函数已弃用”不是一回事.
urlretrieve()
只是一个方便的函数,是
urlopen()
的包装器。如果它对您有效,就没有理由重新发明轮子。我发现它在需要设置特定标题时不起作用,因为api不允许设置自定义标题,例如,
user agent
from urllib.request import urlretrieve
url = "http://www.petercollingridge.co.uk/sites/files/peter/particle_tutorial_7.txt"
urlretrieve(url, "result.txt")