Форум сайта python.su
0
У меня есть текстовый файл, содержимое которого добавляеться построчно. Т.е. получаеться что новая строка это новый элемент. Необходимо при открытии файла узнать количество строк. Мне приходит в голову считать количество символов “\n” , но может есть способ проще?
Офлайн
0
len(open('file', ‘r’).readlines()) если файл не очень большой.
Офлайн
26
sum(1 for l in open('file', ‘r’)) если файл очень большой.
Отредактировано (Июль 4, 2009 12:45:40)
Офлайн
0
slivlen
ZZZ
Интересно, только кто файл закрывать в таком виде будет? :)
Офлайн
3
Он сам закроется…
Офлайн
0
igor.kaist
ну я лично привык руками все делать, а не оставлять Garbage Collector'у… На хабре народ вроде даже проверял - возможны проблемы при таком подходе. Вот тут: http://habrahabr.ru/blogs/python/62383/#comment_1722446
Офлайн
26
Вот уже сколько лет пишу на этом замечательном языке, сколько сотен (тысяч?) файлов им открыл и не закрыл руками, а проблемы с этим у меня ни разу не возникало. Так что предлагаю “забить и не парится”. Тем более, что файл открывается только для чтения и никакие кэши нам не страшны.
А если уж так хочется сделать это руками, то надо добавить ещё две строчки кода, что проблемой обычно не является.
P.S. Да, если уж всё нравится делать руками, то может стоит посмотреть на более низкоуровневый язык? Си? OCAML?
Офлайн
0
Enchantnergc в python как правило оперативно удаляет неиспользованные объекты, даже если программа не большая, в отличии н-р от той же java, где gc за время выполнения небольшой программы, может вообще ни разу не отработать. Ну и полностью согласен с ZZZ, у меня тоже не возникало проблем с незакрытыми файлами даже в крупных web проектах на python.
ну я лично привык руками все делать, а не оставлять Garbage Collector'у…
Офлайн
0
Есть вот такой вот код:
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
Офлайн
88
потому что ‘rt’
Офлайн