regarding using urllib3 to replace urllib2

user297850 picture user297850 · Jul 10, 2017 · Viewed 9.4k times · Source

I was trying to use the following code segment. I am using Python 3, which has urllib3 instead of urllib2. I would like to know how replace this part fh = urllib2.urlopen('http://people.ku.edu/~gbohling/geostats/WGTutorial.zip') data = fh.read() in urllib3. Thanks.

clusterfile = 'ZoneA.dat'
if not os.path.isfile(clusterfile):
    fh = urllib2.urlopen('http://people.ku.edu/~gbohling/geostats/WGTutorial.zip')
    data = fh.read()
    fobj = StringIO.StringIO(data)
    myzip = zipfile.ZipFile(fobj,'r')
    myzip.extract(clusterfile)
    fobj.close()
    fh.close()

Answer

t.m.adam picture t.m.adam · Jul 10, 2017

In python 3 urlopen is part of urllib.request so you have to modify your imports:

from urllib.request import urlopen  

If you want your script to run in python 2 and python 3 you can use:

try:  
    from urllib2 import urlopen
except ImportError:  
    from urllib.request import urlopen