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)?