Задать вопрос
letaon2
@letaon2
Менеджер проектов, управленец

Как автоматически посчитать объем текста в текстовых документах?

Система: MacOS (есть и винда, но хотелось бы найти решение именно под мак)

Сразу к делу:
Имеем папку с текстовыми документами (.txt).
Нужно получить новый текстовый документ в котором будет список заголовков этих текстовых файлов и на против каждого заголовка объем текста (кол-во знаков без пробелов).

Мне почему-то сразу пришла в голову мысль про встроенный автоматизатор процессов Automator. Но я совершенно не умею им пользоваться, даже примерно. Нагуглить что-то подобное не получилось.

Также, в стандартном текстовом редакторе macOS нет возможности посмотреть объем текста, но решается установкой дополнительной "Службы" (название службы: WordService), в ней есть команда WordService:Statistics с горячей клавишей (cmd+shift+I) и открывается окошко с подсчетом знаков у выделенного текста.

Еще возможно будет решением какой-то скрипт, не знаю про них тоже ничего.

Ребята, помогите с этой задачей. Очень нужно. В работе огромное кол-во текстов, и по каждому нужно знать объем знаков. Вручную тоже можно, но ведь гораздо интереснее все автоматизировать.
  • Вопрос задан
  • 269 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Tash1moto
@Tash1moto
import os,re,sys
folder = sys.argv[1]
path = os.listdir(folder)
log = open(os.path.join(folder,'log.txt'),'w')
for j in path:
	if "txt" in j:
		words =0
		f=os.path.join(folder,j)
		with open(f) as file:
			for line in file:
				words+=len(re.findall('\w+', line))
		log.write(j+' = '+str(words)+' words'+'\n')
log.close()

сохранить как doc.py, открыть с той папки терминал,
в терминале написать
python doc.py "путь к папке с текстовыми файлами" (например "/home/user/txtfiles")
подождать...
в папке с файлами появится log.txt с записями
Ответ написан
Saenara
@Saenara
Открваете терминал, переходите в каталог с документами:
cd path/to/my/docs
и выполняете следующую команду
for file in *.txt; do printf '%s: %s\n' "${file}" "`cat ${file} | tr -d '[[:space:]]' | wc -c`"; done > report


если возникнет желание понять суть процесса, то в том же терминале вдумчиво читаем всё, что покажут следующие команды:
man wc
man tr
man cat
man 1 printf
man sh
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы