Python: Как узнать номер строки текстового файла

1

Я хочу знать количество строк текстового файла. Как я могу это сделать?

  • 0
    Вы читаете это и считаете строки. Где вы ожидаете немного магии?
  • 0
    @Ben: Как @SpliFF прокомментировал ответ @ horhay.romero, ваш вопрос неясен. Вы хотите общее количество строк в файле или номер данной строки.
Теги:

4 ответа

4

если итерирование по файлу:

for line_no, line in enumerate(f, start=1):

или если подсчет строк в файле (f):

count = sum( 1 for line in f )
  • 1
    enumerate () начнет считать с 0, что может быть не тем, что вы хотите. Кроме того, файл - это имя функции (эквивалентно open ()), поэтому лучше не использовать его в качестве имени переменной.
  • 0
    Исправлено. Я полагаю, что в Python 2.6 и более поздних версиях вы можете указать номер, с которого можно начать.
3
f = open('textfile.txt', 'rb')
len(f.readlines())

Метод readlines() возвращает список, в котором каждый индекс содержит строку textfile.txt.

  • 3
    хотя sum( 1 for line in f ) будет использовать меньше памяти, поскольку не будет загружать весь файл в память.
  • 0
    поехали @Ben!
Показать ещё 3 комментария
2
f = open("file.text")
count = sum(1 for line in f)

что эквивалентно

count = 0
for line in f:
   count+=1
1

Как сказал @Dan D., вы можете использовать enumerate() в открытом файле. По умолчанию начинается отсчет с 0, поэтому, если вы хотите начать подсчет строки в 1 (или что-то еще), используйте аргумент start при вызове функции enumerate(). Кроме того, он считал, что плохая практика использует "файл" в качестве имени переменной, так как существует функция с этим именем. Таким образом, попробуйте что-то вроде:

for line_no, line in enumerate(open(file_name), start=1):
    print line_no, line
  • 0
    Использование функции "file" не рекомендуется: "" "При открытии файла предпочтительно использовать open () вместо прямого вызова этого конструктора" ""
  • 0
    @ Джон Мачин: я изменил это.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню