Estendendo a função os.walk do Python no servidor FTP
Como posso fazeros.walk
atravessar a árvore de diretórios de um banco de dados FTP (localizado em um servidor remoto)? A maneira como o código está estruturado agora é (comentários fornecidos):
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)
Estou pensando que preciso definir uma nova função (ou seja,def ftp()
) para adicionar essa funcionalidade ao código acima. Receio, no entanto, que oos.walk
Por padrão, a função percorrerá apenas as árvores de diretório do computador em que o código é executado.
Existe uma maneira de estender a funcionalidade doos.walk
ser capaz de atravessar uma árvore de diretórios remotos (via FTP)?