设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 32214|回复: 1
打印 上一主题 下一主题

【每日一坑 6】 查找文件内容

[复制链接]

0

主题

1

好友

61

积分

注册会员

Rank: 2

楼主
发表于 2016-2-16 15:25:26 |显示全部楼层

回帖奖励 +5

@crossing先生
请帮我看看,新手鼓起勇气努力写了大半天,期待前辈指点,有任何错误,不妥,都请您指出,拜谢
#!\usr\bin\python
#-*-encoding:utf-8-*-
#author=xuqq
#下面这个程序实现的功能是:在一个文件夹,包括子文件夹中,寻找包含相关内容的文件,把这些文件罗列出来
import os,re

def search_in_path(path_original,str_targit):
    targit_files = []
    if (os.path.exists(path_original) and os.path.isabs(path_original)):               
        for root,dir,files in os.walk(path_original):                                    #os.walk()遍历是个好东东
            print root
            print dir
            print files
            
            for file_obj in files:
                file_whole_name = os.path.join(root,file_obj)
                result = search_in_file(file_whole_name,str_targit)
                if result !="":
                    targit_files.append(result)
                else:
                    continue
    else:
        print "The path which you have input is not valid!"
    print "最终包括这个内容的文件有:\n"
    result_num = 0
    for tar in targit_files:
        print "%d\t%s" %(result_num,tar)
        result_num = result_num+1
            
def  search_in_file(file_original,str_targit):
    if os.path.isfile(file_original):
        fp = open(file_original,'r')
        match = False
        line = "file begin:"
        i = 1
        while line:
            line =  fp.readline()
            #print "以下打印内容:\n" ,line
            m = re.findall(str_targit,line)
            #print "m = \t",m
            if m !=[]:
                match =True
                print "在文件里找到了"
                break
            else:
                continue
            i = i+1
        print "%_%"*28
        print "match:\t",match
        if match ==True:
            print "Found it!\t"+file_original
            fp.close()
            print '*'*80
            return file_original
        else:
            print "Nothing found!"
            fp.close()
            print '#'*80
            return ""
            
def main():
    search_in_path("C:\Python27", "xuqq")
   
if __name__ =='__main__':
    main()
回复

使用道具 举报

0

主题

1

好友

61

积分

注册会员

Rank: 2

沙发
发表于 2017-4-11 15:33:46 |显示全部楼层
crossin先生 发表于 2016-2-16 22:35
查找文件里的内容不用readlines,直接read到一个字符串,然后find就可以了。
另外你这个代码好像无法检测 ...

谢谢你,crossin先生,我在你的论坛上学习了python之后,就找了一个写python的工作,所以到现在才来看,特意来感谢你的。谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-3 05:25 , Processed in 0.026941 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部