Создайте Python-приложение, которое принимает путь к текстовому файлу в качестве аргумента командной строки и подсчитывает частоту появления каждого слова в файле. Программа должна выводить результаты в консоль и сохранять их в файл
word_count.json.Программа должна уметь выводить статистику по папке в консоль и сохранять её в файл.
➡️ Пример:
•
python app.py report file.txt — создает файл word_count.json с частотой появления каждого слова в файле.•
python app.py print file.txt — выводит статистику по словам в консоль.Решение задачи ⬇️
import sys
import json
from collections import Counter
import os
def count_words(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read().lower()
words = text.split()
return Counter(words)
def save_report(file_path, word_count):
report_path = os.path.splitext(file_path)[0] + '_word_count.json'
with open(report_path, 'w', encoding='utf-8') as report_file:
json.dump(word_count, report_file, ensure_ascii=False, indent=4)
print(f'Отчет сохранен в {report_path}')
def print_report(word_count):
for word, count in word_count.items():
print(f'{word}: {count}')
if __name__ == '__main__':
if len(sys.argv) < 3:
print('Используйте: python app.py <report|print> <путь к файлу>')
sys.exit(1)
action = sys.argv[1]
file_path = sys.argv[2]
if not os.path.isfile(file_path):
print(f'Файл {file_path} не найден.')
sys.exit(1)
word_count = count_words(file_path)
if action == 'report':
save_report(file_path, word_count)
elif action == 'print':
print_report(word_count)
else:
print('Неизвестное действие. Используйте "report" или "print".')