Wie kann ich os.walk
den Verzeichnisbaum einer FTP-Datenbank (auf einem Remote-Server) durchlaufen? Die Art und Weise der Code strukturiert ist jetzt (Kommentare zur Verfügung gestellt):Erweiterung von Pythons os.walk-Funktion auf FTP-Server
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)
Ich denke, dass ich eine neue Funktion definieren muß (das heißt, def ftp()
) diese Funktionalität oben, um den Code hinzuzufügen. Ich fürchte jedoch, dass die os.walk
-Funktion standardmäßig nur die Verzeichnisbäume des Computers ausführen wird, von dem der Code ausgeführt wird.
Gibt es eine Möglichkeit, dass ich die Funktionalität von os.walk
erweitern kann, um einen entfernten Verzeichnisbaum (über FTP) zu durchlaufen?
https: // pypi .python.org/pypi/ftptool/0.5.1 –
Ich versuche, alle Schnittstellen jenseits von 'ftplib' zu vermeiden. Ist das möglich? Disclaimer: Ich habe 'ftptool' bereits ausprobiert und konnte nicht erreichen, dass ich das mache, was ich will. Daher ist der obige Code ein Python-Remash des Linux-Befehls 'find'. Ich versuche, es zu erweitern, indem ich einen FTP-Schalter zu 'os.walk' integriere. – warship
Wenn mir jemand zeigen kann, wie man das in 'ftptool' auf eine Weise umbildet, die für entfernte FTP-Datenbanken funktioniert, werde ich dies auch als eine Antwort akzeptieren. – warship