Найти - Пользователи
Полная версия: Как посчитать количество строк в файле?
Начало » Python для новичков » Как посчитать количество строк в файле?
1 2
jeha
У меня есть текстовый файл, содержимое которого добавляеться построчно. Т.е. получаеться что новая строка это новый элемент. Необходимо при открытии файла узнать количество строк. Мне приходит в голову считать количество символов “\n” , но может есть способ проще?
slivlen
len(open('file', ‘r’).readlines()) если файл не очень большой.
ZZZ
sum(1 for l in open('file', ‘r’)) если файл очень большой.
Enchantner
slivlen
ZZZ
Интересно, только кто файл закрывать в таком виде будет? :)
igor.kaist
Он сам закроется…
Enchantner
igor.kaist
ну я лично привык руками все делать, а не оставлять Garbage Collector'у… На хабре народ вроде даже проверял - возможны проблемы при таком подходе. Вот тут: http://habrahabr.ru/blogs/python/62383/#comment_1722446
ZZZ
Вот уже сколько лет пишу на этом замечательном языке, сколько сотен (тысяч?) файлов им открыл и не закрыл руками, а проблемы с этим у меня ни разу не возникало. Так что предлагаю “забить и не парится”. Тем более, что файл открывается только для чтения и никакие кэши нам не страшны.
А если уж так хочется сделать это руками, то надо добавить ещё две строчки кода, что проблемой обычно не является.

P.S. Да, если уж всё нравится делать руками, то может стоит посмотреть на более низкоуровневый язык? Си? OCAML?
slivlen
Enchantner
ну я лично привык руками все делать, а не оставлять Garbage Collector'у…
gc в python как правило оперативно удаляет неиспользованные объекты, даже если программа не большая, в отличии н-р от той же java, где gc за время выполнения небольшой программы, может вообще ни разу не отработать. Ну и полностью согласен с ZZZ, у меня тоже не возникало проблем с незакрытыми файлами даже в крупных web проектах на python.
caufman
Есть вот такой вот код:
import sys
from PyQt4 import QtCore, QtGui
from random import randint
# Загрузка словарей
dic_features_file    = open ('L:/src/generator/dic/features.txt',  'rt')
# Декодируем полученные словари в UTF-8
dic_features_txt    = dic_features_file  .read() .decode ('utf-8')
# Определяем количество строк в словарях
dic_features_line   = len (dic_features_file.readlines())
print dic_features_txt
print 'Strok: ', dic_features_line
который на выходе выдает следующий результат:
№;Именительный (кто, что);Винительный (кого, что);Род
1;трусливый;трусливого;он
2;трусливая;трусливую;она
3;отважный;отважного;он
4;отважная;отважную;она
5;прекрасный;прекрасного;он
6;прекрасная;прекрасную;она
7;ничтожный;ничтожного;он
8;ничтожная;ничтожную;она
9;уродливый;уродливого;он
10;уродливая;уродливую;она
Strok: 0
почему ноль то???
Shaman
потому что ‘rt’
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB