Seite 1 von 1

Anzahl von Dateien in einem Verzeichnis

Verfasst: Sonntag 18. Juni 2006, 15:33
von soma
Hi Hi ich suche nach einer Möglichkeit die Anzahl der Dateien in einem Verzeichnis zu ermitteln.
Mit os.walk() funktioniert es auch jedoch sehr langsam.
ich benötige eine funktion die in etwa so schnell wie Eigenschaften eines Verzeichnisses unter Windows ist.
ich hoffe jemand hat einen rat

mfg soma

Verfasst: Sonntag 18. Juni 2006, 18:20
von Gromit
Hilft das?

Code: Alles auswählen

>>> len( os.listdir( "." ) )
259
Ist halt nicht rekursiv.

HTH,
Gerald

Verfasst: Sonntag 18. Juni 2006, 19:56
von Masaru
Gromit hat geschrieben:

Code: Alles auswählen

>>> len( os.listdir( "." ) )
259
... os.listdir() listet leider auch Unterverzeichnisse mit auf.

Man müsste die Elemente der Liste noch auf os.path.isfile() prüfen.

Sowas in der Art z.B:

Code: Alles auswählen

>>> directory = r'd:\work'
>>> os.listdir(directory)
['demo.txt', 'Masaru.gif', 'Python']
>>> 
>>> files = [ elem for elem in os.listdir(directory) if os.path.isfile(os.path.join(directory, elem)) ]
>>> files
['demo.txt', 'Masaru.gif']
>>> len(files)
2
Ob aber auch das nun "schnell" genug (oder mindestens schneller als os.walk()) ist, müsstest man mal für sich austesten.

Habe ein wenig rumprobiert und bin bei meiner WinXP Machine auf das Phänomen gestoßen, dass os.walk und die os.listdir List Comprehension annährend gleich schnell sind ... jedoch os.walk "manchmal" doppelt so lange braucht.

Ich würde deswegen vielleicht die os.listdir Variante vorziehen.

Tip.: Anstelle von "." (aktuelles Arbeitsverzeichnis) kann man mit Python geschickter auch die Platformübergreifende 'os.getcwd()' Methode verwenden.

>>Masa<<