Source

cffi / demo / py.cleanup

#! /usr/bin/env python
import sys, os, stat
from bsdopendirtype import opendir

def clean(path):
    global count
    try:
        content = opendir(path)
    except OSError:
        print >> sys.stderr, "skipping", path
        return
    for filename, smode in content:
        if stat.S_ISDIR(smode):
            clean(filename)
            if filename.endswith('/__pycache__'):
                try:
                    os.rmdir(filename)
                except OSError:
                    pass
        elif (filename.endswith('.pyc') or filename.endswith('.pyo') or
              filename.endswith('.pyc~') or filename.endswith('.pyo~')):
            os.unlink(filename)
            count += 1

count = 0

for arg in sys.argv[1:] or ['.']:
    print "cleaning path", arg, "of .pyc/.pyo/__pycache__ files"
    clean(arg)

print "%d files removed" % (count,)