os.listdir()
gibt eine Liste von Dateinamen, die tun nicht den Pfad enthalten. Das bedeutet os.listdir("/home/zondo")
könnte ["dir1", "file1", "file2"]
geben. Nehmen wir an, wir sind in dir1
bei der Ausführung dieses Befehls. Wir sehen zuerst ob dir1
existiert. Es geht nicht so filter()
bewegt sich zum nächsten. Warum existiert es nicht? Weil wir keinen absoluten Pfad angegeben haben; wir haben einen relativen Pfad angegeben. Da wir in dir1
sind, sieht os.path.isfile()
, ob eine Datei ist. Natürlich ist es nicht; es existiert nicht. Sie müssen den Pfad angeben. Sie könnten eine lambda
Funktion:
filter(lambda x: os.path.isfile(os.path.join(dir, x)), os.listdir("DIRECTORY"))
Es wäre wahrscheinlich in diesem Fall besser, eine Liste Verständnis zu verwenden:
[x for x in os.listdir("DIRECTORY") if os.path.isfile(os.path.join(dir, x))]
Wollen Sie die Liste von Verzeichnis sehen, und auch, wie der Filter implementiert wurde. – Hun
Haben Sie das Verzeichnis der Datei vorangestellt? 'listdir (" \ Pfad \ zu \ Verzeichnis \ ") wird etwas zurückliefern wie' ["Datei1.txt", "Datei2.dat", ...] 'Sie müssen dann' Datei \ (\ Pfad \ zu \ dir \ file1.txt ")'. – Julien