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

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


On 2007-01-05 16:10, wittempj at hotmail.com 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 ( http://ftputil.sschwarzer.net/ ) could help with
this parsing. A session may look like

>>> import ftputil
>>> host = ftputil.FTPHost("ftp.domain.com", "user", "password")
>>> file_names = host.listdir(host.curdir)
>>> file_names
['wanted_filename']
>>> file_name = file_names[0]
>>> host.download(file_name, file_name, "b")
>>> host.close()

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

Stefan

-- 
Dr.-Ing. Stefan Schwarzer
SSchwarzer.com - Softwareentwicklung für Technik und Wissenschaft
http://sschwarzer.com



More information about the Python-list mailing list