I am currently doing a course on machine learning in UDACITY . In there they have written some code in python 2.7 but as i am currently using python 3.5 , i am getting some error . This is the code
import urllib url = "https://www.cs.cmu.edu/~./enron/enron_mail_20150507.tgz" urllib.urlretrieve(url, filename="../enron_mail_20150507.tgz") print ("download complete!")
I tried 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!")
But still gives me error .
urllib.request(url, filename="../enron_mail_20150507.tgz") TypeError: 'module' object is not callable
I am using PyCharm as my IDE .
Advertisement
Answer
You’d use urllib.request.urlretrieve
. Note that this function “may become deprecated at some point in the future”, so you might be better off using the less likely to be deprecated 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)
For small enough files, you could just read
and write
the whole thing and drop the loop entirely.