某天,隔壁大神正在看一份内核技术文档,我想研读下文档向大神“偷师”,恰好我的虚拟XP桌面无法使用搜索功能,而且项目组一般是一起使用共享目录的,这就导致大量资料杂糅在一起,我要找到大神的"葵花宝典"难上加难。

在日常工作中,大家基本都要自己记录重要文件路径,或者通过一层又一层目录去查找需要的文件,这不仅大海捞针,而且相当费时!

今天就为大家分享如何使用Python查找你最需要的文件,分为四个版本(初级、中级、高级、传说),默认以Win形式演示。

1、介绍os.walk遍历目录树

在实际工作中,极有可能会遇到查找某个目录及其子目录下的所有文件。例如,查找某个目录及其目录下的所有的图片文件或者所有的Word文件名,查找某个目录及其子目录最大的十个文件。对于每个目录而言,os.walk返回一个三元组(dirpath,dirnames,filenames)。

dirpath:保存的是当前目录。

dirnames:当前目录下的子目录列表

filenames: 当前目录下的文件列表。

2、查找文件代码

本次默认Windows查找文件,演示的图片如下

主目录:F:python演示流浪地球计划

子目录:F:python演示流浪地球计划总计划

1. 初级查找文件(findfile_v1.py)

 1import os 2 3def getFilepath(rootDir): 4 filepathresult = [] # 所需要的文件路径的集合 5 for dirpath,dirNames,fileNames in os.walk(rootDir): 6 for fileName in fileNames: 7 apath = os.path.join(dirpath, fileName)  8 filepathresult.append(apath) 9 for i in range(len(filepathresult)): 10 print(filepathresult[i])1112if __name__ == '__main__':13 rootDir = r'F:python演示流浪地球计划'14 getFilepath(rootDir)

1.1 重点代码详解

1)执行流

rootDir:根目录(即需要查找的目录)

2)第7行 apath :文件的绝对路径

os.path.join(dirpath ,fileName) : 将当前目录和文件名组合

1.2 初级查找文件优缺点

优点:便捷,可以把该目录所有文件都查询出来。

缺点:无法根据文件名关键字或者指定文件类型进行筛选。

1.3 执行演示

初级查找文件findfile_v1.py确实是没有在带任何过滤的情况下,把该目录的所有文件都查询出来了。

2. 中级查找文件(findfile_v2.py)

 1import os 2 3def getFilepath(rootDir,filepathmsg,filetype): 4 filepathresult = []  5 for dirpath,dirNames,fileNames in os.walk(rootDir): 6 for fileName in fileNames: 7 apath = os.path.join(dirpath ,fileName)  8 apathname = os.path.splitext(apath)[0]  9 apathtype = os.path.splitext(apath)[1] 10 if filetype == apathtype:11 if filepathmsg in apathname: 12 filepathresult.append(apath)13 for i in range(len(filepathresult)):14 print(filepathresult[i])1516if __name__ == '__main__':17 rootDir = r'F:python演示流浪地球计划'18 filepathmsg = "2019年"19 filetype = ".txt"20 getFilepath(rootDir,filepathmsg,filetype)

2.1 重点代码详解

1)执行流

filepathmsg :文件名关键信息(字符串类型)

filetype :文件扩展名(字符串类型)

2) 第4行 filepathresult :为所需要的文件路径的集合

3)第8行 apathname = os.path.splitext(apath)[0]

4)第9行 apathtype = os.path.splitext(apath)[1]

os.path.splitext:返回一个除去扩展名的部分和扩展名的二元组

apathname:为路径+文件名,不包括扩展名

apathtype :为文件类型,得到"."+ "扩展名"

2.2 中级查找文件优缺点

优点:搜索唯一指定文件名关键字加指定的文件类型。

缺点:无法搜索多个文件名关键字或者多个指定的文件类型。

2.3 执行演示

中级查找文件findfile_v2.py,过滤信息为文件名信息"2019年"和文件类型".txt",符合该过滤信息的文件名(含子目录)都被筛选出来。有个要点,老铁们要注意,如果文件路径符合文件名关键字信息,也是会被筛选出来的!因为apathname包含路径和文件名(即除扩展名)。

3. 高级查找文件(findfile_v3.py)

 1import os 2 3def getFilepath(rootDir,filepathmsg,filetype): 4 filepathresult = [] 5 for dirpath,dirNames,fileNames in os.walk(rootDir): 6 for fileName in fileNames: 7 apath = os.path.join(dirpath ,fileName) 8 apathname = os.path.splitext(apath)[0]  9 apathtype = os.path.splitext(apath)[1] 10 for i in filetype:11 if i in apathtype:12 for j in filepathmsg:13 if j in apathname: 14 filepathresult.append(apath)15 for i in range(len(filepathresult)):16 print(filepathresult[i])1718if __name__ == '__main__':19 rootDir = r'F:python演示流浪地球计划'20 filetype = [".TXT

python查找关键字所属行_Python查找文件有多牛?男默女泪!!!相关推荐

  1. python查找关键字在目录的某些文件哪个位置 行数_Python目录爬虫扫描各种文件并搜索关键字...

    我正在尝试创建一个目录爬虫来搜索文件夹及其所有子文件夹中的所有文件中的特定关键字.这就是我目前所拥有的(在本例中,我要查找关键字"olofx"):import os rootDir ...

  2. python re 匹配多行_Python正则表达式,看这一篇就够了

    作者 | 猪哥 来源 | 裸睡的猪(ID: IT--Pig) 大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习 Python中 ...

  3. 以下python语言关键字在异常处理_python后端开发工程师考证试题

    原标题:python后端开发工程师考证试题 python开发工程师考证试题 选择题 题目 关于 Python 程序格式框架的描述,以下选项中错误的是 ( A ) A: Python 语言不采用严格的& ...

  4. python怎么写多行_python 多行字符串怎么写才能不破坏缩进

    有时候需要在python script里拼出个.mel文件,然后让mayabatch去执行 如果多行字符串的定义在function里面,嵌套很深,又希望左侧没空格,那默认情况下会是这样 def fuc ...

  5. python语言关键字有哪些_Python之33个关键字是哪些

    Python之33个关键字是:1.内置常量[False.None.True]:2.逻辑与.或.非[and or not]:3.判断与循环[if elif else,for while break co ...

  6. 下列哪个python语句是正确的_Python笔试面试题_牛客(待完善)

    中文,免费,零起点,完整示例,基于最新的Python 3版本.https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42 ...

  7. python用os修改文件名_python查找特定文件并修改文件名

    #coding:cp936 __author__ = 'JYC103' import os,re file_dir=r'D:\BaiduYunDownload\从零开始学习linux安全加固\视频\视 ...

  8. python seek到指定行_python文件操作seek()偏移量,读取指正到指定位置操作

    python 文件操作seek() 和 telll() 自我解释 file.seek()方法格式: seek(offset,whence=0) 移动文件读取指针到制定位置 offset:开始的偏移量, ...

  9. python去重复行_python去除文件中重复的行实例

    python去除文件中重复的行,我们可以设置一个一个空list,res_list,用来加入没有出现过的字符行! 如果出现在res_list,我们就认为该行句子已经重复了,可以再加入到记录重复句子的li ...

最新文章

  1. 算法---------简化路径(Java版本)
  2. as 关联 android源码,android studio 2.x以上关联源码
  3. python实现日历功能_Python实现的简单万年历例子分享
  4. 在控制台中循环录入字符串,输入q时退出。 然后显示一个新的字符(Python)
  5. Enter Further Contact Person error message
  6. Java学习笔记_字符串/静态static
  7. 菜鸟学Java(六)——简单验证码生成(Java版)
  8. Redis的超时命令和垃圾回收策略
  9. 敏捷开发中asp.net MVC的开发次序感受(先开发View?先开发Model?先开发Controller!)...
  10. python基础:re模块匹配时贪婪和非贪婪模式
  11. docker之部署一个不中毒的浏览器
  12. 常用的默认端口号(HTTP\HTTPS\FTP)
  13. mac下Cornerstone显示日志问题 Cound not contact repository to read the latest log entries
  14. 运维工程师项目案例_要建设AIOps,运维工程师的角色和职责需如何调整?
  15. 记录关于监听HDMI插拔广播
  16. 在hive如何创建数据库哦
  17. 抓rtmp推流地址_在浏览器中实现RTMP推流
  18. 计算机学术引用论文,我国计算机领域学术论文引用中的马太效应——以《计算机学报》和《计算机研究与发展》为例...
  19. Win10搭建Web局域网文件共享库
  20. 招银面经总结;面经转载,答案自写。

热门文章

  1. 【干货】Python玩转各种多媒体,视频、音频到图片
  2. dpkg: error processing package oracle-java8-installer (--configure):
  3. 机器学习-多元梯度下降
  4. 笔记-Handheld multi-frame super-resolution之一
  5. python 爬虫,起点完结榜前100榜单
  6. Exception 'ReflectionException' with message 'Class require does not exist'
  7. Storm sql 简单测试
  8. 浅谈localStorage、sessionStorage 与cookie
  9. java基础—对象转型
  10. [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式 (hash构造后缀数组,二分答案)