1

Тема: Є файл в якому є слова по яким шукають файл.

Але проблема скрипт працює, але якщо додати на новий рядок ключове слово він не працює, а треба, що б відбувався пошук за кожним словом в файлі.

import os
import fnmatch
     
path = input('Директормя: ')
mask = input('Маска: ')
pattern = open('\signaturs.txt')
line = pattern.readline()
while line:
    line = pattern.readline()
pattern.close()
 
for dirpath, dirs, files in os.walk(path):
    for file_name in files:
        if fnmatch.fnmatch(file_name, mask):
            inp = open(os.path.join(dirpath, file_name), 'r')
        try:
            for line in inp:
                if pattern in line:
                    print(os.path.join(dirpath, file_name))
        except:
            pass
        else:
            pass
Post's attachments

signaturs.txt 7 b, 346 downloads since 2015-01-29 

2

Re: Є файл в якому є слова по яким шукають файл.

В тому вигляді, як є, дані з signaturs.txt йдуть в нікуди: вони зчитуються в змінну line (рядок за рядком в одне й те ж місце, доки не дійде до кінця файла), яка потім нікуди не передається. Далі, що має робити ось цей фрагмент:

            for line in inp:
                if pattern in line:

В такому вигляді циклічно зчитується кожен рядок файла inp, і якщо один із символів цього рядка буде дорівнювати файлу pattern (завідомо неможлива умова), має щось відбутись.

Тобто, дивно, що ця програма щось знаходить узагалі, що б там не було в заданому текстовому файлі з ключовими словами.

3

Re: Є файл в якому є слова по яким шукають файл.

Ще краще було б змінити структуру файла, зробити з нього якийсь словник, буде швидше і легше

Подякували: nicoliafox1

4

Re: Є файл в якому є слова по яким шукають файл.

import os
import fnmatch
     
path = input('Директорiя: ')
mask = input('Маска: ')
pattern = open('\signaturs.txt')
kwords=[]
line = pattern.readline()
while line:
    kwords.append(line)
    line = pattern.readline()
pattern.close()
 
for dirpath, dirs, files in os.walk(path):
    for file_name in files:
        if fnmatch.fnmatch(file_name, mask):
            inp = open(os.path.join(dirpath, file_name), 'r')
        try:
            for line in inp:
                for kword in kwords:
                    if kword in line:
                        print(os.path.join(dirpath, file_name))
        except:
            pass
        else:
            pass

Так працює?

Подякували: nicoliafox1

5 Востаннє редагувалося nicoliafox (31.01.2015 16:50:18)

Re: Є файл в якому є слова по яким шукають файл.

Так, дякую.