import sys
import os
import macfs

def walk(top):
	names = os.listdir(top)
	for name in names:
		path = os.path.join(top, name)
		if os.path.isdir(path):
			walk(path)
		else:
			if path[-4:] in ['.pyc', '.pyo'] and os.path.exists(path[:-1]):
				print "deleting:", path
				os.remove(path)
			elif path[-4:] == '.pyc':
				print "!!! ------ .pyc file without .py file:", path
			elif path[-4:] == '.pyo':
				print "!!! ------ .pyo file without .py file:", path

fss, ok = macfs.GetDirectory('Select the starting folder:')
if ok:
	walk(fss.as_pathname())
