How to search for a string in text files?

后端 未结 12 2544
死守一世寂寞
死守一世寂寞 2020-11-22 04:29

I want to check if a string is in a text file. If it is, do X. If it\'s not, do Y. However, this code always returns True for some reason. Can anyone see what i

12条回答
  •  忘掉有多难
    2020-11-22 05:22

    How to search the text in the file and Returns an file path in which the word is found (Как искать часть текста в файле и возвращять путь к файлу в котором это слово найдено)

    import os
    import re
    
    class Searcher:
        def __init__(self, path, query):
            self.path   = path
    
            if self.path[-1] != '/':
                self.path += '/'
    
            self.path = self.path.replace('/', '\\')
            self.query  = query
            self.searched = {}
    
        def find(self):
            for root, dirs, files in os.walk( self.path ):
                for file in files:
                    if re.match(r'.*?\.txt$', file) is not None:
                        if root[-1] != '\\':
                            root += '\\'           
                        f = open(root + file, 'rt')
                        txt = f.read()
                        f.close()
    
                        count = len( re.findall( self.query, txt ) )
                        if count > 0:
                            self.searched[root + file] = count
    
        def getResults(self):
            return self.searched
    

    In Main()

    # -*- coding: UTF-8 -*-
    
    import sys
    from search import Searcher
    
    path = 'c:\\temp\\'
    search = 'search string'
    
    
    if __name__ == '__main__':
    
        if len(sys.argv) == 3:
            # создаем объект поисковика и передаем ему аргументы
            Search = Searcher(sys.argv[1], sys.argv[2])
        else:
            Search = Searcher(path, search)
    
        # начать поиск
        Search.find()
    
        # получаем результат
        results = Search.getResults()
    
        # выводим результат
        print 'Found ', len(results), ' files:'
    
        for file, count in results.items():
            print 'File: ', file, ' Found entries:' , count
    

提交回复
热议问题