cache os.path.exists