Ampliación de la función os.walk de Python en el servidor FTP

Como puedo haceros.walk atravesar el árbol de directorios de una base de datos FTP (ubicada en un servidor remoto)? La forma en que se estructura el código ahora es (se proporcionan comentarios):

import fnmatch, os, ftplib

def find(pattern, startdir=os.curdir): #find function taking variables for both desired file and the starting directory
    for (thisDir, subsHere, filesHere) in os.walk(startdir): #each of the variables change as the directory tree is walked
        for name in subsHere + filesHere: #going through all of the files and subdirectories
            if fnmatch.fnmatch(name, pattern): #if the name of one of the files or subs is the same as the inputted name
                fullpath = os.path.join(thisDir, name) #fullpath equals the concatenation of the directory and the name
                yield fullpath #return fullpath but anew each time

def findlist(pattern, startdir = os.curdir, dosort=False):
    matches = list(find(pattern, startdir)) #find with arguments pattern and startdir put into a list data structure
    if dosort: matches.sort() #isn't dosort automatically False? Is this statement any different from the same thing but with a line in between
    return matches

#def ftp(
#specifying where to search.

if __name__ == '__main__':
    import sys
    namepattern, startdir = sys.argv[1], sys.argv[2]
    for name in find(namepattern, startdir): print (name)

Estoy pensando que necesito definir una nueva función (es decir,def ftp()) para agregar esta funcionalidad al código anterior. Sin embargo, me temo que elos.walk La función, de forma predeterminada, solo recorrerá los árboles de directorios de la computadora desde la que se ejecuta el código.

¿Hay alguna manera de extender la funcionalidad deos.walk para poder atravesar un árbol de directorio remoto (a través de FTP)?