Python читает файлы с жесткого диска и возвращает результат в зависимости от найденного шаблона - PullRequest
0 голосов
/ 27 сентября 2011

что я хочу сделать это; - прочитать файлы с жесткого диска и найти шаблон, подобный the, посмотреть, содержит ли файл эту строку, если он возвращает true или возвращает false. В вызове функции она должна распечататься красиво, говоря `найденный в file.txt и т. Д.

это то, что я придумал до сих пор

import os
path = '../'
folder = os.listdir(path);

y = {}
n = {}

def bla(pattern):
    for book in folder:
        if book[-3:] == 'txt':
            data = open(path+''+book).read()
            if pattern in sanitize(data):
                y[pattern] = book + " contains " + pattern
                return True
            else :
                n[pattern] = book + " does not contain " + pattern
                return False

if bla('jane'):
    print(y['jane']) 
    print(n['jane'])

желаемый вывод - это;

1.txt содержит 'the' 2.txt не содержит «the» 3.txt содержит «the» 4.txt не содержит 'the'

это работает, но без возврата true и возврата false, что я хотел получить, ЛЮБОЙ ЛУЧШИЙ СПОСОБ ЭТОГО?

import os
path = '../'
folder = os.listdir(path);

def bla(pattern):
    for book in folder:
        if book[-3:] == 'txt':
            data = open(path+''+book).read()
            if pattern in sanitize(data):
                print(book + " contains " + pattern)
            else :
                print(book + " does not contain " + pattern)

bla('the')

1 Ответ

1 голос
/ 27 сентября 2011
import re
m1 = re.compile(r'.*?\.txt$')
pattern = 'yourpattern'
m2 = re.compile(r'%s' % (pattern))

for file in filter(m1.search, os.listdir(somedir)):
    if m2.search(open(file,'r').read()):
        print file, 'contains', pattern
    else:
        print file, 'does not contain', pattern

изменить вывод на свой вкус

...