python文件中查找字符_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]))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值