MyTetra Share
Делитесь знаниями!
Подсчет количества строк, слов и букв в текстовом файле
Время создания: 29.07.2019 23:51
Раздел: !Закладки - Python - Перевод документации Python 3.x
Запись: xintrea/mytetra_db_adgaver_new/master/base/15159439210m7ss7h4nf/text.html на raw.githubusercontent.com

Подсчет количества строк, слов и букв в текстовом файле

Программа считает количество строк, слов и букв в переданном ей файле. 

Имя файла должно передаваться в качестве первого аргумента после имени самого скрипта. Например, вызов скрипта в Linux через командную оболочку выглядит примерно так:

 python3 words.py text.txt  
import sys
 
fname = sys.argv[1]
lines = 0
words = 0
letters = 0
 
for line in open(fname):
    lines += 1
    letters += len(line)
 
    pos = 'out'
    for letter in line:
        if letter != ' ' and pos == 'out':
            words += 1
            pos = 'in'
        elif letter == ' ':
            pos = 'out'
 
print("Lines:", lines)
print("Words:", words)
print("Letters:", letters) 

С комментариями:

import sys
 
# argv - список аргументов командрой строки
# argv[0] - имя самого файла-скрипта
# argv[1] - первый аргумент, здесь - имя обрабатываемого файла
fname = sys.argv[1]
 
# Переменные для подсчета строк, слов и букв.
lines = 0
words = 0
letters = 0
 
# Функция open() открывает переданный ей файл
# и возвращает объект, итерация по которому
# позволяет последовательно извлекать строки файла.
for line in open(fname):
    # Была получена очередная строка.
    # Она присваивается переменной line.
    # Счетчик строк следует увеличить на 1.
    lines += 1
 
    # С помощью len определяется количество символов в строке
    # и добавляется к счетчику букв.
    letters += len(line)
 
    # Код ниже считает количество слов в текущей строке.
 
    # Флаг, сигнализирующий нахождение за пределами слова.
    pos = 'out'
 
    # Цикл перебора строки по символам.
    for letter in line:
        # Если очередной символ не пробел, а флаг в значении "вне слова",
        # то значит начинается новое слово.
        if letter != ' ' and pos == 'out':
            # Поэтому надо увеличить счетчик слов на 1,
            words += 1
            # а флаг поменять на значение "внутри слова".
            pos = 'in'
        # Если очередной символ пробел,
        elif letter == ' ':
            # то следует установить флаг в значение "вне слова".
            pos = 'out'
 
# Вывод количеств строк, слов и символов на экран.
print("Lines:", lines)
print("Words:", words)
print("Letters:", letters) 

Пример выполнения скрипта в командной оболочке bash

XXX@XXX:~/PycharmProjects/words$ python3 words_comment.py words.py 
Lines: 22
Words: 64
Letters: 385
 
MyTetra Share v.0.59
Яндекс индекс цитирования