-
-
Save nsabine/5766426 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import keyword | |
import sys | |
# key phrase to look for | |
needle = 'todo' | |
# file extensions to be searched for todo statements | |
extensions_to_include = ('.py', '.c', '.m', '.h', '.txt') | |
# directories to skip | |
exclude_directories = ('.git') | |
class Todos: | |
def __init__(self, needle='todo', extensions_to_include=('.py','.txt'), exclude_directories=('.git')): | |
self.needle = needle | |
self.extensions_to_include = extensions_to_include | |
self.exclude_directories = exclude_directories | |
def walk_and_list(self, directory): | |
"""Find filenames to be searched""" | |
for dirname, dirnames, filenames in os.walk(directory): | |
for filename in filenames: | |
if filename.endswith(self.extensions_to_include): | |
self.list_occurences_in_file(filename) | |
# recurse into subdirectories | |
for dir in dirnames: | |
if dir not in self.exclude_directories: | |
self.walk_and_list(os.path.join(dirname, dir)) | |
def list_occurences_in_file(self, filename): | |
"""Print occurences of needle in a file.""" | |
with open(filename) as f: | |
for line_number, line in enumerate(f, 1): | |
line_lowered = line.lower() | |
if (self.needle in line_lowered): | |
print("%s (%d) %s" % (filename, line_number, line.strip())) | |
if ( __name__ == "__main__"): | |
a = Todos(needle, extensions_to_include, exclude_directories) | |
a.walk_and_list('.') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment