2013-12-21 90 views
2

我想用python下載一個大的檔案文件並保存,但urllib不適用於我。這是我的代碼:urllib.request for python 3.3無法下載文件

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' 

在我看來,像urllib是不知何故破碎和缺少「請求」的方法。我正在使用Python 3.3。我應該使用另一個模塊還是實際上是一個Python問題?

+0

可能重複](http://stackoverflow.com/questions/7243750/download-file-from-web-in-python-3) – kenorb

回答

13

不,它沒有壞掉。 The urllib.request documentation是如何工作的很清楚:

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') 
+1

注意:*「我想用python下載一個大檔案文件並保存」*。如果你想下載一個不適合內存的大文件,'req.read()'是不合適的。您可以使用['urlretrieve()'代替](http://stackoverflow.com/a/20716205/4279) – jfs

+4

根據手冊,'urlretrieve' *可能會在將來的某個時間點被棄用。有沒有一種將來可以直接保存到文件的安全方式? – steffen

1

的urllib2的模塊已經在Python 3.0命名urllib.request裏和urllib.error裏跨越幾個模塊分開。將你的源代碼時,3

from urllib.request import urlopen 

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

print(data) 
4

要下載的URL在文件中的2to3的工具會自動適應進口,你可以使用urlretrieve() function

from urllib.request import urlretrieve 
url = "http://www.petercollingridge.co.uk/sites/files/peter/particle_tutorial_7.txt" 
urlretrieve(url, "result.txt") 
在Python 3從網站[下載文件的