我目前正在 UDACITY 学习机器学习类(class)。他们在那里用 python 2.7 编写了一些代码,但由于我目前使用的是 python 3.5,所以出现了一些错误。这是代码
import urllib
url = "https://www.cs.cmu.edu/~./enron/enron_mail_20150507.tgz"
urllib.urlretrieve(url, filename="../enron_mail_20150507.tgz")
print ("download complete!")
我尝试了 urllib.request 。
import urllib
url = "https://www.cs.cmu.edu/~./enron/enron_mail_20150507.tgz"
urllib.request(url, filename="../enron_mail_20150507.tgz")
print ("download complete!")
但仍然给我错误。
urllib.request(url, filename="../enron_mail_20150507.tgz")
TypeError: 'module' object is not callable
我使用 PyCharm 作为我的 IDE。
最佳答案
你会使用 urllib.request.urlretrieve
.请注意,此功能“可能会在将来的某个时候被弃用”,因此您最好使用不太可能被弃用的接口(interface):
# Adapted from the source:
# https://hg.python.org/cpython/file/3.5/Lib/urllib/request.py#l170
with open(filename, 'wb') as out_file:
with contextlib.closing(urllib.request.urlopen(url)) as fp:
block_size = 1024 * 8
while True:
block = fp.read(block_size)
if not block:
break
out_file.write(block)
对于足够小的文件,您可以只读取
和写入
整个文件,然后完全放弃循环。
关于python - Python 3.5 中 urllib.urlretrieve 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38358521/