File data can also be uploaded through FTP. As with downloading, there are two basic functions for
storlines(). Both take a command to run, and a file-like object to
storbinary() function will call the
read() method repeatedly on that object until its
content is exhausted, while
storlines(), by contrast, calls the
Unlike the corresponding download functions, these methods do not require you to provide a
callable function of your own. (But you could, of course, pass a file-like object of your own crafting
readline() method computes the outgoing data as the transmission proceeds.
binaryul.py shows how to upload a file in binary mode.
from ftplib import FTP import sys, getpass, os.path if len(sys.argv) != 5: print "usage: %s <host> <username> <localfile> <remotedir>" % ( sys.argv) exit(2) host, username, localfile, remotedir = sys.argv[1:] password = getpass.getpass( "Enter password for %s on %s: " % (username, host)) f = FTP(host) f.login(username, password) f.cwd(remotedir) fd = open(localfile, 'rb') f.storbinary('STOR %s' % os.path.basename(localfile), fd) fd.close() f.quit()
This program looks quite similar to our earlier efforts. Since most anonymous FTP sites do not permit file uploading, you will have to find a server somewhere to test it against; I simply installed the old, venerable ftpd on my laptop for a few minutes and ran the test like this:
root@erlerobot:~/Python_files# python binaryul.py localhost brandon test.txt /tmp
You can modify this program to upload a file in ASCII mode by simply changing