import ftplib, os, shutil, re
host = "ftp.server.com"
port = 21
user = "username"
password = "password"
user = ""
password = ""
ftp = ftplib.FTP()
ftp.connect(host,port)
ftp.login(user,password)
def output(out):
return 0
def copy_directory(directory="", depth=0,exceptions = None):
if exceptions != None and len(exceptions) > 0:
re_str = ("(" + "|".join(exceptions) + ")").lower()
else:
re_str = "^$"
if exceptions == None:
exceptions = []
elif re.match(re_str,directory.lower()):
return
newdir = os.path.join(os.getcwd(),host)
if(directory != ""):
newdir = os.path.join(os.getcwd(),directory)
if(os.path.exists(newdir)):
shutil.rmtree(newdir)
os.mkdir(newdir)
os.chdir(newdir)
files = []
try:
ftp.cwd(directory)
except ftplib.error_perm:
return
try:
files = ftp.nlst()
except ftplib.error_perm:
print((" "+(" |" * (depth))+"-No Files in Folder"))
print(" "+(" |" * (depth)))
if(len(files) == 0):
print(" "+(" |" * (depth))+"-No Files in Folder")
for f in files:
if(f == "." or f == ".."):
continue
print(" "+(" |" * (depth))+"-"+f,"- (IGNORED)" if re.match(re_str,f.lower()) else "")
if re.match(re_str,f.lower()):
continue
try:
ftp.size(f)
local_f = os.path.join(os.getcwd(),f)
fh = open(local_f, "wb")
ftp.retrbinary("RETR "+f, fh.write, 8*1024)
fh.close()
except ftplib.error_perm as err:
if(err.args[0].count("553") > 0):
continue
copy_directory(f,depth+1,exceptions)
print(" "+(" |" * (depth-1)))
ftp.cwd("..")
os.chdir("..")
copy_directory()