Можно воспользоваться вот таким вариантом, состряпанным за пол-часа
python 3.3 x86, либы стандартные
from ftplib import FTP
import os
class FtpUploadFolder():
def __init__(self, server, user, passwd, catalog):
self.fcount = 0
self.dcount = 0
self.ftp = FTP(server, user, passwd)
self.ftp.cwd(catalog)
def uploadOne(self, new_name, path_name):
self.ftp.storbinary('STOR ' + new_name, open(path_name, 'rb') )
def uploadDir(self, localdir):
localfiles = os.listdir(localdir)
for localname in localfiles:
localpath = os.path.join(localdir, localname)
print('uploading', localpath, 'to', localname)
if not os.path.isdir(localpath):
self.uploadOne(localname, localpath)
self.fcount += 1
else:
try:
self.ftp.mkd(localname)
print('directory created', localname)
except:
print('directory not created')
self.ftp.cwd(localname)
self.uploadDir(localpath)
self.ftp.cwd('..')
self.dcount += 1
print('directory exited')
def close(self):
self.ftp.quit()
print('uploaded files: ', self.fcount)
print('uploaded folders: ', self.dcount)
if __name__ == '__main__':
f = FtpUploadFolder('ftp.test.com', 'user_login', 'user_pass', 'http') # http - папка на сервере, в которую загружаем
f.uploadDir('c:\\catalog') # папка, которую загружаем
f.close()