Как посчитать строки в python?
Как узнать скольк строк в текстовом файле, незнаю почему через count получается на одну меньше, последняя без переноса наверн, файл иногда пустой, что выдёт тогда
Ваш вопрос
Как узнать скольк строк в текстовом файле, незнаю почему через count получается на одну меньше, последняя без переноса наверн, файл иногда пустой, что выдёт тогда
v4-pro
Файл
Считайте строки при чтении: sum(1 for _ in f). Последняя учитывается даже без завершающего перевода.
Текст в переменной
Используйте len(text.splitlines()).
Почему не хватает единицы Подсчёт разделителей строк не равен подсчёту самих строк. Не прибавляйте единицу всегда: пустой файл должен дать ноль. Кодировку чтения выбирайте по фактической кодировке файла.
• Для файла самый прямой способ — пройти по строкам и посчитать их: sum(1 for _ in f), где f открыт для чтения текста. Итерация выдаёт последнюю строку даже тогда, когда в конце файла нет завершающего перевода строки.
• Пустой файл даст ноль. Файл, содержащий одну непустую строку без перевода в конце, даст единицу. Пустая строка между двумя непустыми тоже считается отдельной строкой, если вы не ставили задачу считать только содержательные строки.
• Простое количество символов перевода строки не всегда равно количеству строк. Оно показывает число разделителей. Именно поэтому ваш результат может быть на единицу меньше, когда последняя строка заканчивается концом файла, а не переводом строки.
• Не исправляйте это безусловным прибавлением единицы. Для пустого файла такой результат станет ошибочным, а для текста с завершающим переводом может возникнуть лишняя строка. Надёжнее сразу считать нужную сущность подходящим способом.
• При чтении укажите правильную кодировку. Если файл сохранён в UTF-8, подходит encoding='utf-8'. При другой кодировке её нужно выбрать соответственно, а не скрывать ошибки декодирования случайным режимом игнорирования.
• Если текст уже загружен в строковую переменную, подходит len(text.splitlines()). У splitlines есть собственные правила обработки границ строк: завершающий разделитель не создаёт дополнительный пустой элемент. Для обычного подсчёта текстовых строк это часто удобно.
• Если нужны только непустые строки, условие надо добавить явно. При этом решите, считается ли строка из пробелов пустой. Визуальные переносы длинной строки в редакторе не обязательно являются настоящими переводами строки в файле и отдельно не подсчитываются.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
4o
4o
Как посчитать строки в python?
Для текстового файла считайте проходы по строкам, например через
sum(1 for _ in f)внутри открытого файлового объекта. Тогда последняя строка учитывается и без завершающего перевода строки, а пустой файл даст ноль.Выберите кодировку, в которой действительно сохранён файл. Такой способ не требует загружать его целиком в память. Метод подсчёта символов перевода строки считает разделители, а не все строки: последняя строка может не иметь разделителя в конце. Если текст уже в переменной, можно использовать
len(text.splitlines()), учитывая правила разбиения строк и пустой ввод. Не прибавляйте единицу без проверки: для пустого файла получится неверный результат.