17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

def __init__(self, path, text, percent, callback):<br />

Thread.__init__(self)<br />

self.path = path<br />

self.text = text<br />

self.percent = percent<br />

self.callback = callback<br />

self.buffer = DEFAULT_BUFSIZE<br />

self.running = False<br />

self.exts = ('.txt', '.py')<br />

def stop(self):<br />

"""Arrête le thread."""<br />

if self.running:<br />

self.running = False<br />

Exercices corrigés<br />

CHAPITRE 11<br />

def run(self):<br />

"""Méthode lancée par start()."""<br />

path = self.path<br />

text = self.text<br />

found = 0<br />

self.running = True<br />

for root, reps, files in walk(path):<br />

if not self.running:<br />

break<br />

for index, file_ in enumerate(files):<br />

ext = os.path.splitext(file_)[-1]<br />

if ext not in self.exts:<br />

continue<br />

if not self.running:<br />

break<br />

self.percent('Recherche %d/%d: %s/%s' \<br />

% (index, len(files), root, file_))<br />

fullname = '%s/%s' %(root, file_)<br />

if self.text_in_file(fullname, text):<br />

self.callback('%s' % fullname)<br />

found += 1<br />

if found == 0:<br />

self.callback('Aucun fichier')<br />

self.percent('%d fichiers(s) trouvé(s)' % found)<br />

def text_in_file(self, file_, text):<br />

"""Renvoie vrai si le file_ contient le text.<br />

Lis le text par morceaux pour limiter la taille<br />

mémoire."""<br />

ctext = compile(text)<br />

try:<br />

f = open(file_, 'r', buffering=self.buffer)<br />

except IOError: # en cas de pb d'accès (droits, etc.)<br />

return False<br />

365

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!