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

A

alex

Hello,

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,

Alex
 
W

wittempj

alex said:
Hello,

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,

Alex

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.
 
S

Stefan Schwarzer

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
 
A

alex

Thanks guys for the help! I used nlst().
The ftputil seems to be very helpfull, but getting a new library in an
organization like the one I work at is big issue. Thanks anyway :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,233
Members
46,821
Latest member
AleidaSchi

Latest Threads

Top