Jak wykonać os.walk
przejść przez drzewo katalogów bazy danych FTP (znajdujące się na serwerze zdalnym)? Sposób, w jaki kod jest skonstruowany teraz jest przewidziane (komentarze):Rozszerzanie funkcji os.walk Pythona na serwerze FTP
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)
myślę, że trzeba zdefiniować nową funkcję (tj def ftp()
), aby dodać tę funkcjonalność do kodu powyżej. Obawiam się jednak, że funkcja os.walk
domyślnie będzie tylko chodzić po drzewach katalogów komputera, z którego uruchamiany jest kod.
Czy istnieje sposób, w jaki mogę rozszerzyć funkcjonalność os.walk
, aby móc przechodzić przez zdalne drzewo katalogów (przez FTP)?
https: // PyPI .python.org/pypi/ftptool/0.5.1 –
Próbuję unikać jakichkolwiek interfejsów poza 'ftplib'. Czy to się da zrobić? Zastrzeżenie: Próbowałem już 'ftptool' i nie mogłem zrobić tego, czego chcę. W związku z powyższym powyższy kod jest ponownym uruchomieniem w języku Python polecenia 'find' systemu Linux. Próbuję rozszerzyć go poprzez włączenie przełącznika FTP do 'os.walk'. – warship
Jeśli ktoś może mi pokazać, jak ponownie zaimplementować to w 'ftptool' w sposób, który działa dla zdalnych baz danych FTP, przyjmuję to również jako odpowiedź. – warship