How To/python/

#!python
 
"""
KW: list files in dir, read dir in python, listowanie katalogu, czytanie katalogu, 
wyświetl pliki w katalogu, czytaj pliki w katalogu.
 
[pl]
klasa przechodzi rekurencyjnie przez katalog podany w konstruktorze.
Jeśli katalog nie został podany  używany jest bieżacy katalog.
Przy każdym napotkanym pliku wykonywana jest metoda fileOperation(self, path, f),
a przy każdym katalogu dirOperation(self, path, f).
 
Klasa może być użyta np. do wyświetlenie plików w katalogu.
 
Zalecam rozszerzyć klasę i przeciążyć metody fileOperation(self, path, f) i 
dirOperation(self, path, f) jak w przykładzie poniżej.
 
[en]
see docstring
 
"""
 
import os
 
class RecuFilesOperations:
    """
    RecuFilesOperations([str path])
    Walks recursively through dirs in path. When path is not given current dir is used.
    When file found fileOperation(str currentPath, str currentItemName) method is called.
    When dir found dirOperation(str currentPath, str currentItemName) method is called.
    """
    recuDirNo = 0
    recuFileNo = 0
    recuLvl = 0
    recuStartPath = ''
 
    def __init__(self, path="."):
        self.recuStartPath = path
        self._recuDirRead(path, 0)
 
    def _recuDirRead(self, path, lvl):
        self.recuLvl = lvl
        for f in os.listdir(path):
            if os.path.isdir(path + '/' + f):
                self.recuDirNo += 1
                self.dirOperation(path, f)
                self._recuDirRead(path + '/' + f, lvl + 1)
            else:
                self.recuFileNo += 1
                self.fileOperation(path, f)
 
    def fileOperation(self, path, f):
        print (self.recuLvl * " ") + f
 
    def dirOperation(self, path, f):
        print path + "/" + f
### e:recuFilesOperations
 
 
# example
# Extend RecuFilesOperations class and overload fileOperation and dirOperation methods
 
class MyExample(RecuFilesOperations):
    def fileOperation(self, path, f):
        print "FILE FOUND! > " + f
 
    def dirOperation(self, path, f):
        print "DIR FOUND! > " + f
 
x = MyExample(".")