How to get file name on a remote server with ftplib?

Stefan Schwarzer sschwarzer at
Sat Jan 6 02:38:15 CET 2007

On 2007-01-05 16:10, wittempj at wrote:
> alex wrote:
>> My script is trying to get a file from a remote server, every day it
>> ftps from a directory. My code works perfect if I know the name of the
>> file in the remote directory.
>> ftp.retrbinary('RETR ' + filename, handleDownload)
>> The problem is that in the future the name of the file is going to be
>> aleatory. How can I get the file's name (only one file is in that
>> directory) and store it in a variable before executing ftp.retrbinary?
>> Thanks a lot for your help,
> You can use the nlst(dirname) method to retrieve a directory listing on
> the remote server. If the remote server doesn't support NLST command
> rhen you could do ftp.retrlines('LIST')  and parse the results to get a
> directory listing.

ftputil ( ) could help with
this parsing. A session may look like

>>> import ftputil
>>> host = ftputil.FTPHost("", "user", "password")
>>> file_names = host.listdir(host.curdir)
>>> file_names
>>> file_name = file_names[0]
>>>, file_name, "b")
>>> host.close()

Ok, I admit this isn't a pure-ftplib solution. :-)


Dr.-Ing. Stefan Schwarzer - Softwareentwicklung für Technik und Wissenschaft

More information about the Python-list mailing list