python实现目录打印及辅助定位特定目录中满足条件的文件

python实现目录文件打印

用tuple进行当前目录下子目录及文件名的获取,代码如下:

# 导入模块
import os

# 生成一个元组
ret_tuple = ()

ret_tuple = os.walk('.\\', topdown=True)
print(ret_tuple)

执行上面代码,我们发现print(ret_tuple)的打印结果为:
<generator object walk at 0x00000238374B6CA8>

我们发现ret_tuple的输出不是一个直接的信息展示,而是一个地址,这是为什么呢?

结果分析

在 Python 中,os.walk() 函数返回的是一个生成器(generator),而不是直接返回包含所有文件和目录结构的元组。生成器是一种迭代器(iterator),它会在迭代时动态地计算出下一个值,而不是事先计算出所有的值占用内存。

生成器通常用于大型集合或无限序列,这样在使用这些数据时可以节省内存,因为生成器只会在每次迭代中产生一个值。

输出中的16进制字符是这个生成器对象在内存中的地址表示。要访问os.walk()返回的路径、目录名和文件名信息,您需要迭代这个生成器对象。

其中os.walk 返回一个三元组的生成器(generator)。
格式为 (dirpath, dirnames, filenames)

迭代输出

# 导入模块
import os

# 生成一个元组
ret_tuple = ()

ret_tuple = os.walk('.\\', topdown=True)
# print(ret_tuple)
print('\\当前目录结构如下所示:')
# 通过生成器迭代输出
for cur_dir, list_dir, list_file in ret_tuple:
    # 显示当前目录名
    print('当前目录:', cur_dir)
    if len(list_dir) > 0:
        # 显示当前目录中的子目录
        print('包含的子目录:', list_dir)
    if len(list_file) > 0:
        # 显示当前目录中的文件
        print('当前目录下的文件:', list_file)
    # 打印分隔符
    print('=' * 30)

再次运行即可正确输出。

在这里插入图片描述

通过python代码定位特定目录中满足条件的文件

在处理大量数据或管理庞大的文件系统时,手动寻找特定条件的文件不仅耗时而且低效。本文介绍的Python脚本正是为了解决这一问题而生,此脚本能自动遍历指定目录,高效地筛选出匹配筛选条件的文件。
代码如下:

import os


# 定义一个根据关键字查找文件的函数
def search_file(search_path, key_word):
    # 如果传入的search_path不是文件夹名,直接退出
    if not os.path.isdir(search_path):
        print('查找的不是文件夹,退出')
        return
    # 通过循环取得目录下的文件或子目录
    for field_or_dir in os.listdir(search_path):
        # 将上级目录与其下的文件或子目录串联起连接起来形成一个路径
        path_join = os.path.join(search_path, field_or_dir)
        # 判断是否是目录
        if os.path.isdir(path_join):
            # 如是是目录递归调用本函数
            search_file(path_join, key_word)
        # 如果是文件,就判断关键字是否包含在文件名中
        elif key_word in os.path.basename(path_join):
            # 打印出文件名包含关键字的文件的名字
            print(os.path.abspath(path_join))


# 主函数main
if __name__ == '__main__':
    search_path = input('请录入要查找的目录:')
    key_word = input('请录入查找文件的关键字:')
    print('文件夹[', search_path, ']中包含[', key_word, ']关键字的文件列举如下:')
    # 调用函数查找文件
    search_file(search_path, key_word)

我们可以按照提示,依次输入需要寻找的目录和文件关键字来实现,代码运行结果如下:
在这里插入图片描述

参考 python编程100例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/502784.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

江苏开放大学2024年春《液压与气压传动060246》第2形考作业占形考成绩的25%参考答案

​答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 电大搜题 多的用不完的题库&#xff0c;支持文字、图片搜题&…

如何计算KST指标,昂首资本一个公式计算

在上一篇文章中&#xff0c;Anzo Capital昂首资本和各位投资者一起了解了KST指标&#xff0c;今天我们继续分享如何计算KST指标。 首先投资者可以在时间范围9、12、18和24分析变化率值。 前三个值(时间帧9、12、18)用EMA 26平滑&#xff0c;最后一个值用EMA 39平滑。 然后&…

实习管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 1. 前台功能…

Python之Opencv教程(1):读取图片、图片灰度处理

1、Opencv简介 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个用于计算机视觉和图像处理的开源库&#xff0c;提供了丰富的图像处理、计算机视觉和机器学习功能。它支持多种编程语言&#xff0c;包括C、Python、Java等&#xff0c;广泛应用于图像处…

《VMamba》论文笔记

原文链接&#xff1a; [2401.10166] VMamba: Visual State Space Model (arxiv.org) 原文笔记&#xff1a; What&#xff1a; VMamba: Visual State Space Model Why&#xff1a; 多年以来CNN和VIT作为视觉特征提取的主流框架 CNN具有模型简单&#xff0c;共享权重&…

Java基础之运算符(整合)

文章目录 一.运算符算数运算符练习: 二.算术运算符的高级用法""操作的三种情况数字相加字符串相加字符相加 三.自增自减运算符基本用法 四.赋值运算符&关系运算符赋值运算符关系运算符逻辑运算符 五.短路逻辑运算符六.三元运算符 一.运算符 运算符: 对字面量或…

36.HarmonyOS鸿蒙系统 App(ArkUI) 创建第一个应用程序hello world

36.HarmonyOS App(ArkUI) 创建第一个应用程序helloworld 线性布局 1.鸿蒙应用程序开发app_hap开发环境搭建 3.DevEco Studio安装鸿蒙手机app本地模拟器 打开DevEco Studio,点击文件-》新建 双击打开index.ets 复制如下代码&#xff1a; import FaultLogger from ohos.fau…

kaggle竞赛宝典 | 最新时间序列统一大模型,秒杀各类时序任务!

本文来源公众号“kaggle竞赛宝典”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;最新时间序列统一大模型&#xff0c;秒杀各类时序任务 作者&#xff1a;Fareise 最新时间序列统一大模型UniTS&#xff0c;秒杀各类时序任务&…

ubuntu20.04安装截图工具flameshot

ubuntu20.04 自带的截图工具&#xff0c;可以使用快捷键“shift printScreen” ,但是它不能对截图进行编辑。 现在安装截图工具 flameshot&#xff0c;使用以下命令&#xff1a; sudo apt install flameshot 安装完成后&#xff0c;使用以下命令打开&#xff1a; flamesho…

Flutter 开发学习笔记(1):第一个简单的Flutter项目(上)

文章目录 前言相关链接初始化项目设置键盘映射建议使用AnLink链接物理机。 项目配置日志打印官方案例添加依赖主函数更换添加最简单的按钮Flutter 项目结构Flutter项目入口Flutter的MyApp函数 更新视图直接修改浅拷贝父节点数据思考 修改布局子节点重构子节点布局重构多次扩展布…

操作系统--死锁

目录 说明使用互斥锁时死锁是如何发生的。 系统模型&#xff1a; 死锁的特性&#xff1a; 处理死锁的方法&#xff1a; 死锁的预防&#xff1a; 死锁避免&#xff1a; 说明使用互斥锁时死锁是如何发生的。 我们先来看一个例子&#xff1a; 当两列火车在十字路口逼近时&am…

linux忘记mysql的root密码,强制修改

1、登录linux后编辑mysql的配置文件&#xff1a;vi /etc/my.cnf 2、添加如下代码&#xff0c;表示跳过授权表登录mysql 编辑完成后&#xff0c;按Esc键&#xff0c;":wq"退出编辑并保存修改内容。 3、使用命令&#xff1a;service mysqld restart 重启mysql服务. …

【No.21】蓝桥杯组合数学|数位排序|加法计数原理|乘法计数原理|排列数|组合数|抽屉原理|小蓝吃糖果|二项式定理|杨辉三角|归并排序(C++)

组合数学 数位排序 【问题描述】 小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序。当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面。 例如,2022 排在 409 前面, 因为 2022 的数位之和是 6,小于 409 的数位 之和 13。…

【Web应用技术基础】JavaScript(1)——案例:猜数字

上一个博客发了视频。这个博客因为不能插入视频&#xff0c;所以给大家一张一张截图的 点击“重新开始一局游戏” <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"…

Java类与对象:从概念到实践的全景解析!

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;javaSE的修炼之路 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 1、类的定义格式 在java中定义类时需要用到…

Spring: 在SpringBoot项目中解决前端跨域问题

这里写目录标题 一、什么是跨域问题二、浏览器的同源策略三、SpringBoot项目中解决跨域问题的5种方式&#xff1a;使用CORS1、自定 web filter 实现跨域(全局跨域)2、重写 WebMvcConfigurer(全局跨域)3、 CorsFilter(全局跨域)4、使用CrossOrigin注解 (局部跨域) 一、什么是跨域…

matlab 点云可视化(6)——点云按强度进行可视化

目录 一、功能概述1、算法概述2、主要函数二、代码示例三、结果展示四、参考链接本文由CSDN点云侠原创原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、功能概述 1、算法概述 点云按强度进行可视化 2、主要函数

Request和Response

Request&#xff08;请求&#xff09;&Response&#xff08;响应&#xff09; Request&#xff1a;获取请求数据 Response&#xff1a;设置响应数据 Request继承体系 1.Tomcat需要解析请求数据&#xff0c;封装为request对象&#xff0c;并且创建request对象传递到servic…

分治实现快速排序和归并排序

本文用于记录个人算法竞赛学习&#xff0c;仅供参考 一.快速排序&#xff08;升序为例&#xff09; 思想&#xff1a;确定分界点x&#xff0c;将小于分界点的值放在分界点的左边&#xff0c;将大于分界定的值放在分界点的右边&#xff0c;再递归处理两边的左右区间。 步骤&am…

HR应用人才测评开展招聘,可以显著提升效率

某汽车零部件武汉有限公司诚聘库管员1名…… 孟X毅&#xff0c;男&#xff0c;29岁,市场营销专业,做过生产主管,求一份白班工作。 王X宸&#xff0c;女&#xff0c;22岁&#xff0c;有一年会计经验&#xff0c;求相似工作。 张汉X&#xff0c;男&#xff0c;31岁&#xf…