/
Вопросы и ответы
/
Python
/

Как посчитать количество строк в файле python

Как посчитать количество строк в файле python

5 лет назад

Человек-Молекула

Ответы

0
1
2
3
4
file_path = 'path/to/file.txt'

with open(file_path, 'r') as file:
    line_count = sum(1 for line in file)

3 года назад

Vadim B

0

Посчитать количество строк в файле можно так

1
line_count = sum(1 for line in open('file.txt'))

4 года назад

Ivan Mamtsev

0

для подсчёта строк, слов, символов:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os

file = open('some_file.txt', 'r')

lines = 0
words = 0
symbols = 0

for line in file:
    lines += 1
    words += len(line.split())
    symbols += len(line.replace(' ', '')) 

print("кол-во строк:", lines)
print("кол-во слов:", words)
print("кол-во букв(без учета пробелов):", symbols)

4 года назад

Pasha_ Rr

0

Количество строк в файле считают, перебирая файл построчно:

1
2
3
4
with open("words.txt", encoding="utf-8") as f:
    count = sum(1 for _ in f)

print(count)

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

Короче, для небольших файлов

1
2
3
4
with open("words.txt", encoding="utf-8") as f:
    lines = f.readlines()

print(len(lines))

readlines() загружает весь файл в память списком строк. Для файлов в несколько мегабайт это нормально.

Задача: записать три слова и посчитать строки

1
2
3
4
5
with open("words.txt", "w", encoding="utf-8") as f:
    f.write("один\nдва\nтри\n")

with open("words.txt", encoding="utf-8") as f:
    print(len(f.readlines()))  # => 3

Без пустых строк

1
2
with open("words.txt", encoding="utf-8") as f:
    count = sum(1 for line in f if line.strip())

Строки, слова и символы сразу

1
2
3
4
5
6
with open("words.txt", encoding="utf-8") as f:
    text = f.read()

print(len(text.splitlines()))  # строки
print(len(text.split()))       # слова
print(len(text))               # символы

Последняя строка без перевода строки

Если файл не заканчивается символом \n, способы считают по-разному:

СпособФайл a\nb
sum(1 for _ in f)2
len(text.splitlines())2
text.count("\n")1
wc -l в терминале1

wc -l и count("\n") считают символы перевода строки. Последняя строка без \n в этот счёт не попадает.

Из терминала

1
wc -l words.txt

В PowerShell: (Get-Content words.txt).Count.

Ошибки

  • FileNotFoundError — неверный путь. Проверьте, из какой папки запущен скрипт: import os; print(os.getcwd()).
  • UnicodeDecodeError — файл в другой кодировке. Для файлов из старых программ Windows попробуйте encoding="cp1251".

Работу с файлами разбирают в бесплатном курсе «Основы Python».

16 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845