Python os.path.walk遍历文件,搜索文件里面的内容

用os.path.walk来遍历文件,并且搜索文件里面的内容。


import os, sys
listonly = False
skipexts = ['.gif', '.exe', '.pyc', '.o', '.a','.dll','.lib','.pdb','.mdb']        # ignore binary files

def visitfile(fname, searchKey):                       # for each non-dir file
    global fcount, vcount
    try:
        if not listonly:
                if os.path.splitext(fname)[1] in skipexts:
                        pass
                elif open(fname).read().find(searchKey) != -1:
                        print'%s has %s' % (fname, searchKey)
                        fcount += 1
    except: pass
    vcount += 1

def visitor(args, directoryName,filesInDirectory):     # called for each dir 
    for fname in filesInDirectory:
        fpath = os.path.join(directoryName, fname)
        if not os.path.isdir(fpath):
            visitfile(fpath,args)

def searcher(startdir, searchkey):
    global fcount, vcount
    fcount = vcount = 0
    os.path.walk(startdir, visitor, searchkey)

if __name__ == '__main__':
    root=raw_input("type root directory:")
    key=raw_input("type key:")
    searcher(root,key)
    print 'Found in %d files, visited %d' % (fcount, vcount)


运行结果如下所示:

sina@ubuntu:~/work/python$ python search_content.py
type root directory:/home/sina/work/python
type key:sound
/home/sina/work/python/pygame.CHM has sound
/home/sina/work/python/game.py has sound
Found in 2 files, visited 90







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值