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

Обновлено: 07.07.2024

Я хотел бы знать, можно ли узнать, сколько строк содержит текст моего файла, не используя команду as :

Мой файл очень огромен, поэтому мне трудно использовать такой подход.

4 ответа

Недавно я работал над простым текстовым редактором GUI python. Код вызывает следующую функцию, которая должна подсчитать количество строк, введенных в текстовый виджет: def numlines(): targetline = textPad.get(1.0, END) targetline.split() lines = 0 for line in targetline: lines += 1 return lines.

Привет всем у меня есть локальный файл который выглядит так: AAA Anaa AAC EL-ARISH AAE Annaba AAF APALACHICOLA MUNI AIRPORT AAG ARAPOTI AAL Aalborg Airport AAM Mala Mala AAN Al Ain AAQ Anapa AAR Aarhus Tirstrup Airport AAT Altay AAX Araxa AAY Al Ghaydah . Java учебник предлагает оценить.

В качестве питонического подхода вы можете count количество строк, используя выражение генератора в функции sum , следующим образом:

Обратите внимание, что здесь fileobject f является объектом итератора, представляющим итератор строк файла.

Небольшое изменение в вашем подходе

Записи:

Здесь вы будете проходить строку за строкой и не будете загружать полный файл в память

Количество строк файла не сохраняется в метаданных. Так что на самом деле вам нужно запустить весь файл, чтобы понять это. Однако вы можете сделать его немного более эффективным для памяти:

Похожие вопросы:

Есть ли простой способ программно определить количество строк в текстовом файле?

Мне нужно подсчитать количество строк в текстовом файле. Это код, который у меня есть прямо сейчас. CStdioFile sampleFile; sampleFile.Open(test.txt,CFile::modeRead ); long length = 1; CString row();.

Недавно я работал над простым текстовым редактором GUI python. Код вызывает следующую функцию, которая должна подсчитать количество строк, введенных в текстовый виджет: def numlines(): targetline =.

Привет всем у меня есть локальный файл который выглядит так: AAA Anaa AAC EL-ARISH AAE Annaba AAF APALACHICOLA MUNI AIRPORT AAG ARAPOTI AAL Aalborg Airport AAM Mala Mala AAN Al Ain AAQ Anapa AAR.

У меня есть сотни текстовых файлов в папке. Я ищу способ добавить количество строк в текстовом файле к началу соответствующего текстового файла? Есть идеи, как сделать это быстро для всех файлов в.

У меня есть текстовый файл, и в нем много строк, как я могу получить последнее количество строк 'n' из текстового файла? и можем ли мы дать числа в текстовом файле для каждого файла, как мы можем.

Для python у меня есть задание, где я должен вычислить количество слов в текстовом файле и отобразить среднее количество слов в предложении. Однако среднее число слов оказывается всегда одним.

Я хочу знать, как получить количество строк в текстовом файле с помощью Linux. Я пробовал wc и wc-l, но оба отображают только количество строк (столбцов), а не строк. Есть идеи?

Я разрабатываю этот код, который после того, как пользователь выбирает каталог, отображает таблицу файлов, содержащихся в этом каталоге, с их подробными данными (имя, тип, размер . ). Каталог может.

Здесь четыре строки, и теперь я хочу получить результат как четыре. Как я могу это сделать?

Вы можете использовать sum() с выражением генератора:

Обратите внимание, что вы не можете использовать len(f) , так как f является итератором . _ - это специальное имя переменной для одноразовых переменных, см. Какова цель использования единственной подчеркивания "_" в Python? .

Вы можете использовать len(f.readlines()) , но это создаст дополнительный список в памяти, который не будет работать даже с большими файлами, которые не помещаются в памяти.

Эта ссылка ( Как дешево подсчитать количество строк в Python? ) имеет много потенциальных решений, но все они игнорируют один способ сделать это значительно быстрее, а именно, используя небуферизованный (raw) интерфейс, используя bytearrays, и делать свою собственную буферизацию.

Используя модифицированную версию инструмента синхронизации, я считаю, что следующий код работает быстрее (и немного больше Pythonic), чем любое из предложенных решений:

Я бы опубликовал это там, но я относительно новый пользователь для обмена стека и не обладаю необходимой манной.

Это можно сделать полностью с помощью встроенных выражений генераторов, используя itertools, но это выглядит довольно странно:

Вы можете использовать sum() здесь с выражением генератора. Выражение генератора будет иметь [1, 1, . ] вплоть до длины файла. Затем мы вызываем sum() , чтобы сложить их все вместе, чтобы получить общее количество.

Судя по тому, что вы пробовали, вы не хотите включать пустые строки. Затем вы можете сделать:

вот как вы можете сделать это через понимание списка, но это приведет к потере памяти компьютера, так как line.strip () был вызван дважды.

этот также дает строки no.of в файле.

Это будет работать.

Для людей, говорящих использовать with open ("filename.txt","r") as f , вы можете сделать anyname = open("filename.txt","r")

если вы импортируете pandas , вы можете использовать функцию shape , чтобы определить это. Не уверен, как это работает. Код выглядит следующим образом:

Я не новичок в stackoverflow, просто никогда не имел учетной записи и обычно приходил сюда за ответами. Я пока не могу комментировать или голосовать за ответ. НО хотел сказать, что код от Майкла Бэкона выше работает действительно хорошо. Я новичок в Python, но не в программировании. Я читал ускоренный курс Python, и я хотел сделать несколько вещей, чтобы разбить обложку для чтения. Одна утилита, которая использует с точки зрения ETL или даже качества данных, будет собирать количество строк файла независимо от любого ETL. Файл содержит X строк, вы импортируете их в SQL или Hadoop и в итоге получаете X строк. На самом низком уровне вы можете проверить количество строк файла необработанных данных.

Я играл с его кодом и проводил некоторое тестирование, и этот код пока очень эффективен. Я создал несколько разных файлов CSV, разных размеров и количества строк. Вы можете увидеть мой код ниже, и мои комментарии предоставляют время и детали. Приведенный выше код Майкла Бэкона работает примерно в 6 раз быстрее, чем обычный метод Python - просто циклическая обработка строк.

Здесь есть четыре строки, и теперь я хочу получить результат как четыре. Как я могу это сделать?

ОТВЕТЫ

Ответ 1

Вы можете использовать sum() с выражением генератора:

Обратите внимание, что вы не можете использовать len(f) , так как f является iterator. _ - это специальное имя переменной для переменных throwaway, см. Какова цель единственного подчеркивания "_" переменная в Python?.

Вы можете использовать len(f.readlines()) , но это создаст дополнительный список в памяти, который даже не будет работать с огромными файлами, которые не вписываются в память.

Ответ 2

Эта ссылка (Как получить дешевый график в Python?) имеет множество потенциальных решений, но все они игнорируют один из способов сделать этот запуск значительно быстрее, а именно используя небуферизованный (необработанный) интерфейс, используя bytearrays и делая свою собственную буферизацию.

Используя модифицированную версию инструмента синхронизации, я считаю, что следующий код быстрее (и чуть более pythonic), чем любое из предлагаемых решений:

Вот мои тайминги:

Я бы разместил его там, но я являюсь относительно новым пользователем для обмена пакетами и не имею требуемой манны.

Это можно сделать полностью с выражениями генераторов in-line, использующими itertools, но это выглядит довольно странно:

Ответ 3

Вы можете использовать sum() с выражением генератора. Выражение генератора будет [1, 1, . ] до длины файла. Затем мы вызываем sum() , чтобы добавить их все вместе, чтобы получить общее количество.

Кажется, что вы пытались, чтобы вы не хотели включать пустые строки. Затем вы можете:

Ответ 4

Ответ 5

Ответ 6

это также дает отсутствие строк в файле.

Ответ 7

Это будет работать.

Ответ 8

Для людей, говорящих, чтобы использовать with open ("filename.txt","r") as f , вы можете сделать anyname = open("filename.txt","r")

Ответ 9

вот как вы можете это сделать с помощью понимания списка, но это немного портит память вашего компьютера, так как line.strip() вызывается дважды.

Ответ 10

Я играл с его кодом и делал некоторые тесты, и этот код очень эффективен до сих пор. Я создал несколько различных CSV файлов, различных размеров и строк. Вы можете увидеть мой код ниже, и мои комментарии содержат время и подробности. В приведенном выше коде Майкл Бэкон работает примерно в 6 раз быстрее, чем обычный метод Python для простого цикла линий.

Здесь есть четыре строки, и теперь я хочу получить результат как четыре. Как я могу это сделать?

Вы можете использовать sum() с выражением генератора:

Обратите внимание, что вы не можете использовать len(f) , так как f является iterator. _ - это специальное имя переменной для переменных throwaway, см. Какова цель единственного подчеркивания "_" переменная в Python?.

Вы можете использовать len(f.readlines()) , но это создаст дополнительный список в памяти, который даже не будет работать с огромными файлами, которые не вписываются в память.

Эта ссылка (Как получить дешевый график в Python?) имеет множество потенциальных решений, но все они игнорируют один из способов сделать этот запуск значительно быстрее, а именно используя небуферизованный (необработанный) интерфейс, используя bytearrays и делая свою собственную буферизацию.

Используя модифицированную версию инструмента синхронизации, я считаю, что следующий код быстрее (и чуть более pythonic), чем любое из предлагаемых решений:

Вот мои тайминги:

Я бы разместил его там, но я являюсь относительно новым пользователем для обмена пакетами и не имею требуемой манны.

Это можно сделать полностью с выражениями генераторов in-line, использующими itertools, но это выглядит довольно странно:

ответил(а) 2014-12-17T06:05:00+03:00 6 лет, 11 месяцев назад

Вы можете использовать sum() с выражением генератора. Выражение генератора будет [1, 1, . ] до длины файла. Затем мы вызываем sum() , чтобы добавить их все вместе, чтобы получить общее количество.

Кажется, что вы пытались, чтобы вы не хотели включать пустые строки. Затем вы можете:

ответил(а) 2017-01-31T20:56:00+03:00 4 года, 9 месяцев назад

Я играл с его кодом и делал некоторые тесты, и этот код очень эффективен до сих пор. Я создал несколько различных CSV файлов, различных размеров и строк. Вы можете увидеть мой код ниже, и мои комментарии содержат время и подробности. В приведенном выше коде Майкл Бэкон работает примерно в 6 раз быстрее, чем обычный метод Python для простого цикла линий.

Читайте также: