Simple FTP Client
Andrew Bennetts
andrew-pythonlist at puzzling.org
Sat Feb 1 20:27:11 EST 2003
On Sat, Feb 01, 2003 at 08:09:25PM -0500, Metnetsky wrote:
> I'm trying to write a very small script that will connect to a host and
> download a file (much more to come in the future). The following is what
> I've assembled from the ftplib manual.
>
> from ftplib import FTP
>
> ftp = FTP('ftp.thepaperclipse.com')
> ftp.login("drgoslee", "patribus")
> ftp.retrbinary('RETR ./httpdocs/dbbackups/PaperClipse_sql.tar.gz');
> ftp.quit()
>
> Naturally however, I am getting an error.
>
> ftp.retrbinary('RETR/usr/local/psa/home/vhosts/thepaperclipse.com/\
> httpdocs/dbbackups/PaperClipse_sql.tar.gz');
>
> TypeError: retrbinary() takes at least 3 arguments (2 given)
>
> It makes sense, but I don't know how to correct it. What do I need to set
> the other parameter(s) to? Any suggestions would be greatly appreciated.
As stated at http://www.python.org/doc/current/lib/ftp-objects.html:
retrbinary(command, callback[, maxblocksize[, rest]])
Retrieve a file in binary transfer mode. command should be an
appropriate "RETR" command: 'RETR filename'. The callback function
is called for each block of data received, with a single string
argument giving the data block. The optional maxblocksize argument
specifies the maximum chunk size to read on the low-level socket
object created to do the actual transfer (which will also be the
largest size of the data blocks passed to callback). A reasonable
default is chosen. rest means the same thing as in the transfercmd()
method.
You need to pass a callback method, which will be called with each piece of
data as it comes in.
E.g.
f = open('downloaded.file', 'w')
ftp.retrbinary(...., f.write)
-Andrew.
More information about the Python-list
mailing list