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.65
Яндекс индекс цитирования