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. Надеюсь объяснил понятно, не хочу голову вам ломать. Заранее спасибо если укажете мою ошибку и как это исправить. Я новичок