Найти - Пользователи
Полная версия: Проблема с подсчетом общего количества указанного слова в файлах
Начало » Центр помощи » Проблема с подсчетом общего количества указанного слова в файлах
1
BigBaldEgg
 from pathlib import Path
import glob
from argparse import ArgumentParser
def text_searcher(file, phrase):
    with open(file, encoding='utf8') as text:
        for num, line in enumerate(text, 1):
            if phrase in line:
                count = line.count(phrase)
                with open('report.txt', 'a+') as result:
                    result.write(f'string number: {num} total count: {count}\n')
    return count
if Path('report.txt').exists(): Path('report.txt').unlink()
parser = ArgumentParser()
parser.add_argument('directory', type=Path, help='Please enter directory')
parser.add_argument('phrase', type=str, help='Please type phrase')
args = parser.parse_args()
files = glob.glob(f'{args.directory}/*.txt', recursive=True)
sum = 0
for file in files:
    count = text_searcher(file, args.phrase)
    sum = sum + count
with open('report.txt', 'a+') as total:
    total.write('-'*32 + '\n')
    total.write(f'Total: {sum}\n')
print("Done!")
Здравствуйте формучане, работаю над программой которая при указывании какого либо слова и пути к директории в которой находятся текстовые файлы, ищет во всех текстовых файлах это слово и записывает в файл report.txt число указанных слов которые были найдены в текстовом файле, а также общее количество найденных слов во всех файлах. И вроде как работает хорошо, да вот общее количество слов во всех файлах указывает на одно меньше. То есть если у меня в 3 файлах с одинаковым текстом по 3 одинаковых слова в каждом, программа пишет не 9, а 8. Надеюсь объяснил понятно, не хочу голову вам ломать. Заранее спасибо если укажете мою ошибку и как это исправить. Я новичок
py.user.next
  
def text_searcher(file, phrase):
    total = 0
    with open(file, encoding='utf8') as text:
        for num, line in enumerate(text, 1):
            if phrase in line:
                count = line.count(phrase)
                total += count
                with open('report.txt', 'a+') as result:
                    result.write(f'string number: {num} total count: {count}\n')
    return total
BigBaldEgg
py.user.next
Отлично! Все работает, проблема была после того как я писал одинаковое слово на следующей строке. Огромное Вам спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB