假设某个文件夹中存在文件夹、图片、其他格式的文件,其中子文件夹内依然存放着各种文件。我们查找文件夹下 包括子文件夹下的所有png图片,就需要递归思想查找文件夹下的所有子文件夹。
实现如下:def find_files(path, all_files): file_list = os.listdir(path) for file in file_list: cur_path = os.path.join(path, file) if os.path.isdir(cur_path): find_files(cur_path, all_files) else: if ".png" in cur_path: ## 条件 all_files.append(cur_path) return all_files path = "../data/" list_name = [] find_files(path, listname)
那么怎么思考递归算法的实现?首先,我们先编写不进行递归时的任务;然后,加上递归时的条件,然后调用自己。
step 1:先编写不进行递归时的任务def find_files(path, all_files): file_list = os.listdir(path) for file in file_list: cur_path = os.path.join(path, file) if ".png" in cur_path: ## 条件 all_files.append(cur_path) return all_files
step 2:加上需要递归的情况,代码如下。
def find_files(path, all_files): file_list = os.listdir(path) for file in file_list: cur_path = os.path.join(path, file) if os.path.isdir(cur_path): ## 增加:是路径的话,继续进行函数自身的调用 find_files(cur_path, all_files) else: if ".png" in cur_path: ## 条件 all_files.append(cur_path) return all_files
python递归查找路径下所有的文件
于 2021-12-02 14:08:43 首次发布