как узнать количество строк в файле python
Вывести количество строк в файле
Подскажите, пожалуйста, как вывести количество строк, загруженных из файла? Я написал следующий код, но он выводит именно содержимое строк. А мне нужно количество:
7 ответов 7
Чтобы вывести количество строк в файле, не обязательно сами строки сохранять, достаточно просто посчитать сколько раз символ новой строки встречается в тексте:
Файл открывается в текстовом режиме (перевод строки преобразуется в ‘\n’ на всех системах), читается блоками по 8K символов в каждом до конца файла и количество ‘\n’ в каждом блоке суммируется, чтобы найти общее число строк.
Имея count_lines() функцию, легко получить желаемый вывод:
Если проникнуться дзеном пайтона:
На мой взгляд это то, что вам нужно, в легко понятном виде.
Вывести количество строк с помощью регулярного выражения. Особенность. Если последняя строка не пустая, то выведет количество на 1 элемент меньше.
На больших файлах ко всему файлу сразу применять не желательно, возможно проверить на пустые строки построчно или прочитав часть файла, потом сложив длину.
пример текстового файла
Как это работает. В данном случае жадность регулярного выражения отключена.
Жадность включена, из-за жадности регулярных выражений \n\n будут вместе там где ничего нет кроме переноса
Если посчитаем стандартно, то получим включая пустые строки, что пустая строка тоже строка. Этот метод считает всегда количество строк как мы это понимаем.
Причина по которой отличается количество
видна здесь, в конце нет переноса строки который считаем.
Вариант исправления количества строк для регулярных выражений, файл придется читать второй раз с конца.
Если символа переноса в последней строке нет, то прибавить плюс 1, в данном случае просто вывод на экран.
Алтернативное решение этой же проблемы чтение файла с начала построчно, далее взять последнюю строку и проверить в ней символ
Как подсчитать общее количество строк в текстовом файле с помощью python
Например, если мой текстовый файл:
Здесь есть четыре строки, и теперь я хочу получить результат как четыре. Как я могу это сделать?
ОТВЕТЫ
Ответ 1
Вы можете использовать sum() с выражением генератора:
Ответ 2
Эта ссылка (Как получить дешевый график в Python?) имеет множество потенциальных решений, но все они игнорируют один из способов сделать этот запуск значительно быстрее, а именно используя небуферизованный (необработанный) интерфейс, используя bytearrays и делая свою собственную буферизацию.
Используя модифицированную версию инструмента синхронизации, я считаю, что следующий код быстрее (и чуть более pythonic), чем любое из предлагаемых решений:
Я бы разместил его там, но я являюсь относительно новым пользователем для обмена пакетами и не имею требуемой манны.
Это можно сделать полностью с выражениями генераторов in-line, использующими itertools, но это выглядит довольно странно:
Ответ 3
Кажется, что вы пытались, чтобы вы не хотели включать пустые строки. Затем вы можете:
Ответ 4
Ответ 5
Ответ 6
это также дает отсутствие строк в файле.
Ответ 7
Это будет работать.
Ответ 8
Ответ 9
вот как вы можете это сделать с помощью понимания списка, но это немного портит память вашего компьютера, так как line.strip() вызывается дважды.
Ответ 10
Я не новичок в stackoverflow, просто не имел учетной записи и обычно приходил сюда для ответов. Я еще не могу прокомментировать или проголосовать за ответ. НО хотел сказать, что код от Майкла Бэкона выше работает очень хорошо. Я новичок в Python, но не для программирования. Я читал Python Crash Course, и есть несколько вещей, которые я хотел сделать, чтобы разбить крышку для чтения, чтобы охватить подход. Одной утилитой, использующей с точки зрения ETL или даже качества данных, было бы захват количества строк файла независимо от любого ETL. Файл имеет X количество строк, вы импортируете в SQL или Hadoop, и вы получаете X количество строк. Вы можете проверить на самом низком уровне количество строк файла необработанных данных.
Я играл с его кодом и делал некоторые тесты, и этот код очень эффективен до сих пор. Я создал несколько различных CSV файлов, различных размеров и строк. Вы можете увидеть мой код ниже, и мои комментарии содержат время и подробности. В приведенном выше коде Майкл Бэкон работает примерно в 6 раз быстрее, чем обычный метод Python для простого цикла линий.
Подсчет количество: строк, слов, букв в open файле
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Подсчет слов и строк в файле
Добрый вечер! Столкнулся с проблемой подсчета слов и строк из файла. Слова считает, а строки нет.
Вывод стихотворения, подсчёт слов, букв,строк
Добрый день! Только начинаю изучать C# и сразу получила вот такое задание: Напишите программу.
Процедуры: подсчет слов, строчных и прописных букв, сравнение строк
Необходимо составить программу, содержащую процедуру (передача параметров в процедуру через стек).
Определить, сколько букв, слов и строк в файле
Дан файл. Определите сколько в нем букв (латинского алфавита), слов, строк. Выведите три найденных.
Добавлено через 2 минуты
[B]Semen-Semenich[B], вообще код взят из интернета, вот бы покороче какой нибудь и выполняющий все вышеперечисленные условия(
Положите файл рядом с питоновским и попробуйте запустить ещё раз.
Рыжий Лис, приложен, но это в коде что-то не так..
Добавлено через 1 минуту
Рыжий Лис, нужно как то правильнее написать
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Определите сколько в файле букв, слов, строк
Дан файл. Определите сколько в нем букв (латинского алфавита), слов, строк. Выведите три найденных.
Определите сколько в файле букв (латинского алфавита), слов, строк
Дан файл. Определите сколько в нем букв (латинского алфавита), слов, строк. Выведите три найденных.
Узнать из текста в файле количество строк и наибольшее количество слов в строке
Помогите пожалуйста, подсчет строк я вроде сделал, а вот строку с наибольшим количеством слов не.
В файле подсчитать количество строк и букв а
Подскажите, пожалуйста, почему при запуске такой программы(она должна в файле подсчитывать.
Как подсчитать общее количество строк в текстовом файле с помощью python
Например, если мой текстовый файл:
Здесь есть четыре строки, и теперь я хочу получить результат как четыре. Как я могу это сделать?
Вы можете использовать sum() с выражением генератора:
Эта ссылка (Как получить дешевый график в Python?) имеет множество потенциальных решений, но все они игнорируют один из способов сделать этот запуск значительно быстрее, а именно используя небуферизованный (необработанный) интерфейс, используя bytearrays и делая свою собственную буферизацию.
Используя модифицированную версию инструмента синхронизации, я считаю, что следующий код быстрее (и чуть более pythonic), чем любое из предлагаемых решений:
Я бы разместил его там, но я являюсь относительно новым пользователем для обмена пакетами и не имею требуемой манны.
Это можно сделать полностью с выражениями генераторов in-line, использующими itertools, но это выглядит довольно странно:
Кажется, что вы пытались, чтобы вы не хотели включать пустые строки. Затем вы можете:
Я не новичок в stackoverflow, просто не имел учетной записи и обычно приходил сюда для ответов. Я еще не могу прокомментировать или проголосовать за ответ. НО хотел сказать, что код от Майкла Бэкона выше работает очень хорошо. Я новичок в Python, но не для программирования. Я читал Python Crash Course, и есть несколько вещей, которые я хотел сделать, чтобы разбить крышку для чтения, чтобы охватить подход. Одной утилитой, использующей с точки зрения ETL или даже качества данных, было бы захват количества строк файла независимо от любого ETL. Файл имеет X количество строк, вы импортируете в SQL или Hadoop, и вы получаете X количество строк. Вы можете проверить на самом низком уровне количество строк файла необработанных данных.
Я играл с его кодом и делал некоторые тесты, и этот код очень эффективен до сих пор. Я создал несколько различных CSV файлов, различных размеров и строк. Вы можете увидеть мой код ниже, и мои комментарии содержат время и подробности. В приведенном выше коде Майкл Бэкон работает примерно в 6 раз быстрее, чем обычный метод Python для простого цикла линий.
Как получить количество строк дешево в Python?
Мне нужно получить количество строк большого файла (сотни тысяч строк) в Python. Как наиболее эффективно использовать память и время?
На данный момент я делаю:
можно ли сделать что-то лучше?
30 ответов
Вы не можете стать лучше, чем это.
Одна строка, вероятно, довольно быстро:
Я считаю, что файл с отображением в памяти будет самым быстрым решением. Я попробовал четыре функции: функцию, опубликованную OP ( opcount ); простая итерация по строкам в файле ( simplecount ); readline с полем с отображением в памяти (mmap) ( mapcount ); и решение для чтения из буфера, предложенное Николаем Харечко ( bufcount ).
Я запускал каждую функцию пять раз и вычислял среднее время выполнения для текстового файла с 1,2 миллионами строк.
Windows XP, Python 2.5, 2 ГБ ОЗУ, процессор AMD 2 ГГц
Вот мои результаты:
Изменить : номера для Python 2.6:
Таким образом, стратегия чтения из буфера кажется самой быстрой для Windows /Python 2.6
Мне приходилось размещать это на похожем вопросе, пока оценка моей репутации немного не подскочила (спасибо тому, кто меня ударил!).
Все эти решения игнорируют один способ сделать это значительно быстрее, а именно, используя небуферизованный (необработанный) интерфейс, используя байтовые массивы и выполняя собственную буферизацию. (Это применимо только в Python 3. В Python 2 необработанный интерфейс может или не может использоваться по умолчанию, но в Python 3 вы по умолчанию будете использовать Unicode.)
Используя модифицированную версию инструмента синхронизации, я считаю, что следующий код работает быстрее (и чуть более питонно), чем любое из предложенных решений:
Используя отдельную функцию генератора, она быстрее запускается:
Это можно сделать полностью с помощью встроенных выражений генераторов, используя itertools, но это выглядит довольно странно:
Вот программа на python, которая использует многопроцессорную библиотеку для распределения подсчета строк по машинам /ядрам. Мой тест улучшает подсчет 20-миллионного файла строки с 26 до 7 секунд, используя 8-ядерный сервер Windows 64. Примечание. Если не использовать отображение памяти, все будет намного медленнее.
Я бы использовал метод файлового объекта Python readlines следующим образом:
Это откроет файл, создаст список строк в файле, посчитает длину списка, сохранит ее в переменной и снова закроет файл.
Я получил небольшое (4-8%) улучшение с этой версией, в которой повторно используется постоянный буфер, поэтому следует избегать любых затрат памяти или GC:
Вы можете поиграть с размером буфера и, возможно, увидеть небольшое улучшение.
Вот то, что я использую, кажется довольно чистым:
ОБНОВЛЕНИЕ: это немного быстрее, чем при использовании чистого Python, но за счет использования памяти. Подпроцесс запустит новый процесс с тем же объемом памяти, что и родительский процесс, пока он выполняет вашу команду.