urlopen in python3

Olive diolu.remove_this_part at bigfoot.com
Wed Dec 5 18:42:00 EST 2012


Nick Cash <nick.cash at npcinternational.com> wrote:
> > In python2, this work if "something" is a regular file on the
> > system as well as a remote URL. The 2to3 script convert this to
> > urllib.request.urlopen. But it does not work anymore if "something"
> > is just a file name.
> > 
> > My aim is to let the user specify a "file" on the command line and
> > have something that works, whatever the "file " actually is: a
> > regular file, an http url, etc...
> 
> A file path, such as "/etc/passwd", isn't properly a URL, so urllib
> correctly refuses to handle it. You can make it a URL by using the
> file:// protocol, i.e. "file:///etc/passwd"... which appears to work
> in both python2 and python3.
> 


That's true a file path is not an URL, yet the python2 behaviour was
handy. I do not know in advance if it is a file or an URL, so 
what's the best way to hadle the case? I imagine someling like:

if os.path.exists(something):
	something="file://"+os.path.abspath(something)
a=urllib.request.urlopen(something)



More information about the Python-list mailing list