python 查找目录下 文件名中含有某字符串的文件
有坑的地方: 如果代码写成这样:
[( os.path.abspath(x)) for x in os.listdir(startPath) ]
此代码只能用于当前目录下,listdir列出的都只是文件名,然后abspath(x)对着一个文件名找绝对路径,肯定不行,电脑里同名的文件那么多,你要找哪个?
同样,isfile()也不同用于一个文件名,所以这些函数都只是对当前目录下的操作
import os,sys
#编写一个程序,能在某目录以及其所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
def searchFile(key,startPath = '.'):
if not os.path.isdir(startPath):
raise ValueError
l= [os.path.join(startPath,x) for x in os.listdir(startPath)] #列出所有文件的绝对路径
#listdir出来的相对路径 不能用于 isfile abspath只能用在当前目录
filelist=[x for x in l if os.path.isfile(x) if key in os.path.splitext(os.path.basename(x))[0]] #文件
#只查找文件名中 不包括后缀 文件路径
if not hasattr(searchFile,'basePath'):#把函数当成类 添加属性
searchFile.basePath=startPath #只有第一次调用才会赋值给basePath
outmap = map(lambda x:os.path.relpath(x,searchFile.basePath),filelist) #转换成相对于初始路径的相对路径
outlist = list(outmap)
dirlist= [x for x in l if os.path.isdir(x)] #目录
for dir in dirlist:
outlist = outlist + searchFile(key,dir)
return outlist
if __name__=='__main__':
print(searchFile(sys.argv[1]))
python 查找目录下 文件名中含有某字符串的文件的更多相关文章
- 路径或文件名中含有中文的jar文件双击启动不了 -> Java7的Bug?
至从安装了java7后,才发现部分可执行的jar文件双击都启动不了了. 比如所有的jar文件放在桌面上双击启动不了. 比如所有的文件名中含有中文的jar文件双击启动不了. 比如一个 abc.jar 放 ...
- Linux查看当前目录下文件名中包含指定字符的文件
find . -type f -name "edaijia* 结果:
- FileFilter 遍历某个目录下文件名含有某个字符的文件
由于IIS版本的升级,造成了文件名中含有“+”的特殊字符的文件(多数是图片)在网页中不能被访问,于是必须查找当前目录下含有多少这样的文件,从而制定最佳的解决方案. 废话少说,直接上核心代码: publ ...
- [转载] linux查找目录下的所有文件中是否含有某个字符串
链接自 http://blog.sina.com.cn/s/blog_691a84f301015khx.html,并略加修订. 查找目录下的所有文件中是否含有某个字符串 find .|xargs gr ...
- linux查找目录下的所有文件中是否含有某个字符串
查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" find .|xargs grep -ri "IBM" -l ...
- 查找目录下的所有文件中是否含有某个字符串 linux
查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xar ...
- linux查找目录下的所有文件中是否含有某个字符串 (转)
查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xar ...
- linux查找目录下的所有文件中是否含有某个字符串 <zhuan>
查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xar ...
- 查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM"
linux查看目录下所有文件内容中是否包含某个字符串 2017-07-25 15:13:22 默一鸣 阅读数 21556 文章标签: linux查找文件夹文件内容字符串 更多 分类专栏: Unix ...
随机推荐
- saltstack 安装
centos 6.5 saltstack 2015.5.10 (Lithium) tips:上个版本2015.5.3或者5.5有个bug,Python调用salt的unzip模块报错: 安装 在配置了 ...
- weex安装失败,按照官网步骤多次失败后成功
在安装Weex Toolkit之前,需要确保安装了node, npm. yangfeifei:~ yff$ node -v v6.10.2 yangfeifei:~ yff$ npm -v 3.10. ...
- 微信小程序,天气预报(百度地图开放平台API)
小程序看似一种全新的东西,但好在基本上就是曾经HTML,CSS,JS的一个微变版本. 语法和之前一样.只是一些用法和名字(标签)发生了一些变化. 小程序主要就四种扩展名的文件:js,json,wxml ...
- 2019年1月6日 没有nainai吃 习题1
1列举布尔值是False的所有值 0,False,'',[],{},(),None 2根据范围获取其中3和7整除的所有数的和,并返回调用者:符合条件的数字个数以及符合条件的数字的总和 def func ...
- 使用MyBatis Generator 1.3.7自动生成代码
MyBatis Generator是一款mybatis自动代码生成工具,可以通过配置后自动生成文件. MyBatis Generator有几种方法可以生成代码,下面是其中一种. 一.官网下载 MyB ...
- group by查询每组时间最新的一条记录
最近需要查询每组时间最新的记录 表如下:
- IDEA中更改Tomcat服务器的URL
先别参考以下的做法,貌似出了点状况,后续修正!!! 直接上图吧 看IDEA的右上角 点击黄色方框内的Edit Configurations,进入以下的编辑面 后面四个框内的都可以修改,当然不要修改和其 ...
- 环境准备—之—linux下安装jdk
本文大部分转自 https://www.cnblogs.com/Dylansuns/p/6974272.html openjdk与jdk的区别 ----反正不一样,要不名字也不会不相同了 https ...
- Django 模板继承
本质上来说,模板继承就是先构造一个基础框架模板,而后在其子模板中对它所包含站点公用部分和定义块进行重载. 让我们通过修改 current_datetime.html 文件,为 current_date ...
- 《SQL 基础教程》第四章:数据更新
数据更新包括了表存在的情况下数据的添加,数据的删除和数据的更新,主要是下面三个语句: INSERT 语句 DELETE 语句 UPDATE 语句 在本章的最后,讲了关于「事务」的相关知识,用于对作出的 ...