os.walk返回一个生成器,该生成器创建一个值元组(current_path,current_path中的目录,current_path中的文件)。
每次调用生成器时,它将递归地跟踪每个目录,直到从调用walk的初始目录中没有其他子目录可用为止。
因此,
os.walk('C:dir1dir2startdir').next()[0] # returns 'C:dir1dir2startdir'os.walk('C:dir1dir2startdir').next()[1] # returns all the dirs in 'C:dir1dir2startdir'os.walk('C:dir1dir2startdir').next()[2] # returns all the files in 'C:dir1dir2startdir'所以
import os.path....for path, directories, files in os.walk('C:dir1dir2startdir'): if file in files: print('found %s' % os.path.join(path, file))或这个
def search_file(directory = None, file = None): assert os.path.isdir(directory) for cur_path, directories, files in os.walk(directory): if file in files: return os.path.join(directory, cur_path, file) return None
或者,如果您要查找文件,可以执行以下操作:
import osdef search_file(directory = None, file = None): assert os.path.isdir(directory) current_path, directories, files = os.walk(directory).next() if file in files: return os.path.join(directory, file) elif directories == '': return None else: for new_directory in directories: result = search_file(directory = os.path.join(directory, new_directory), file = file) if result: return result return None



