[Python-Dev] urllib.urlretrieve() and handling 550 errors when reading from FTP

Guido van Rossum guido at python.org
Sun Jul 11 18:27:12 CEST 2004


> > If you remove this, you won't be able to get a directory listing of
> > directories.  I tried this with and without the line; with that line
> > in, it gives a directlry listing, without it gives an IOError (Not a
> > regular file):
> > 
> >>>>urllib.urlretrieve("ftp://ftp.python.org/pub", "xyzzy")
> > 
> > So I'd be against deleting this, unless there's a different way to get
> > directory listings.
> 
> Try it again but with a trailing slash on the address.  With the line 
> removed it will fetch the directory.  Otherwise it errors out.  The code 
> apparently tries to get the file and when it fails with a 550 (meaning 
> the file cannot be accessed because of permissions or lack of 
> existence), the code then send a LIST command which lists whatever the 
> argument is, file or directory.
> 
> Unfortunately I can't think of a good way to detect the difference 
> between a file and a directory that just doesn't have the ending slash 
> beyond reading the output and seeing if it is a single listing for a 
> file with the same name as the LIST request.

Why should I have to use a trailing backslash to get a directory
listing?  That's not in the FTP standard and probably won't work
everywhere.

--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-Dev mailing list