Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/103: Рейтинг темы: голосов - 103, средняя оценка - 4.67
5 / 2 / 3
Регистрация: 23.09.2018
Сообщений: 54

Как читать файл построчно

23.01.2019, 22:52. Показов 20769. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, из названия понятно, что мне требуется прочитать .txt файл построчно.
В файле лежат: (пример)
-0.1993527820828308
-0.06726640035054443
0.04123286073088728
Прежде чем создавать тему, я поискал: "как читать файл построчно" на форуме, и найдя такую тему, обнаружил функцию readline()
Как оказалось она читает столько символов в строке файла, сколько задано в скобках, так как числа не превышают 20 символов, то в функцию впишем 40, на всякий...
Но мне не понятно, как читать следующие строки, так как readline(40) читает символы первой строки. Может кто знает, как реализовать чтение следующих строк?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.01.2019, 22:52
Ответы с готовыми решениями:

Как прочитать файл построчно?
Пришлите код, как можно прочесть одну строку из файла без лишних символов

Как разархивировать из 7z текстовый файл построчно в python?
Есть архив 7z, хотелось бы не просто получить разархивированный файл, а именно получать из него по строчке и проверять каждую строку по...

Как считать файл построчно и присвоить 3 в числитель и 4 в знаменатель
Вопрос по питону: У меня есть файл, в нем строки с дробями (3/4, 4/12, ...) Как мне считать файл построчно и присвоить 3 в числитель и...

10
 Аватар для svtslv
308 / 160 / 66
Регистрация: 18.01.2019
Сообщений: 449
23.01.2019, 22:57
Wintreist,
Python
1
2
with open('filename') as f:
    lines = f.readlines()
1
5 / 2 / 3
Регистрация: 23.09.2018
Сообщений: 54
23.01.2019, 23:03  [ТС]
Цитата Сообщение от svtslv Посмотреть сообщение
Wintreist,
Python
1
2
with open('filename') as f:
    lines = f.readlines()
А можно ли как-то через...?
Python
1
file = open("filename")
0
 Аватар для svtslv
308 / 160 / 66
Регистрация: 18.01.2019
Сообщений: 449
23.01.2019, 23:05
Лучший ответ Сообщение было отмечено Wintreist как решение

Решение

Цитата Сообщение от Wintreist Посмотреть сообщение
А можно ли как-то через...?
А в чем проблема?)
Python
1
2
3
4
5
file = open('filename')
with file as f:
    lines = f.readlines()
    lines = [x.strip() for x in lines]
    print(lines)
1
5 / 2 / 3
Регистрация: 23.09.2018
Сообщений: 54
23.01.2019, 23:07  [ТС]
Цитата Сообщение от svtslv Посмотреть сообщение
А в чем проблема?)
Спасибо, буду пробовать
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
24.01.2019, 10:15
Python
1
2
3
with open('file.txt') as f:
    for line in f:
        print(float(line))
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
25.01.2019, 00:51
Wintreist, Некоторые используют при открытии файла синтаксис with ... as ... :
Если я не ошибаюсь, такой синтаксис используется для автоматического закрытия файла после завершения блока. Лично я не люблю использовать with ... as ... : , предпочитаю принудительно закрывать файл file.close() , если программа выполняется дальше. Для меня так нагляднее. Если же программа заканчивается то и close() не нужно, так как питон сам закрывает файл по окончании работы программы.
Поэтому в разных случаях так

Python
1
2
file = open('filename')
lines = f.readlines()
или так

Python
1
2
3
file = open('filename')
lines = f.readlines()
file.close()
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.01.2019, 00:54
Цитата Сообщение от Wintreist Посмотреть сообщение
функцию readline()
Как оказалось она читает столько символов в строке файла, сколько задано в скобках
Если ничего не задавать - она прочитает до первого перевода строки.
Цитата Сообщение от Wintreist Посмотреть сообщение
как реализовать чтение следующих строк?
Python
1
2
3
with open(filename) as fp:
    for line in iter(fp.readline, ''): 
        print(line,end='')
Но поскольку сам объект открытого файла имеет итератор, то проще делать итерацию прямо по нему - как в этом посте .
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
25.01.2019, 01:24
Кстати я скопировал у вас с ошибкой. Файл нужно указывать с расширением.

Python
1
2
file = open('filename.txt')
lines = f.readlines()
или

Python
1
2
3
file = open('filename.txt')
lines = f.readlines()
File.close()
Добавлено через 7 минут
Я не понял, а зачем вообще в данном случае, когда числа лежат в разных строках, указывать сколько символов читать. Просто читать построчно и все. Другое дело если в строке по нескольку чисел, тогда нужно указывать сколько символов читать за раз.

Добавлено через 7 минут
readlines() читает строка за строкой до конца файла.

Хотя
Лучший способ построчного чтения текстового файла состоит не в том, чтобы прочитать его целиком, а в том, чтобы позволить циклу for автоматически вызывать метод __next__ для перемещения к следующей строке в каждой итерации. Например, следующий фрагмент читает содержимое файла строку за строкой (попутно приводит символы к верхнему регистру и выводит их) без явного обращения к методам файла. Пример:
>>> for line in open('script1.py'): # Использовать итератор файла
... print(line.upper(), end='') # Вызывает метод __next__,
... # перехватывает исключение StopIteration

Добавлено через 8 минут
Garry Galler, В текущих версиях питона объект файла изначально является итератором, поэтому для него нет необходимости применять функцию iter().
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.01.2019, 01:36
Цитата Сообщение от Viktorrus Посмотреть сообщение
поэтому для него нет необходимости применять функцию iter()
В данном случае iter применяется не к объекту файла. Это вторая версия iter()=> iter(callable, sentinel) -> iterator, которая использует вызываемый объект (функцию) и символ завершения итерации.
Такой вариант бывает очень удобен в некоторых случаях, например для бинарного чтения порциями:
Python
1
for chunk in iter(lambda :f.read(128),b''):
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
25.01.2019, 01:54
Сорри сказал глупость про имя файла. Просто под 'filename' понимается имя файла с расширением. Однако некоторые забывают про расширение файла.

Добавлено через 1 минуту
Garry Galler, Спасибо, понял.

Добавлено через 10 минут
Я что то сегодня совсем не внимателен, при открытии файла пишу file , а при чтении строк пишу (вообще то копирую) f вместо file. Прошу прощения. Видимо пора идти спать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.01.2019, 01:54
Помогаю со студенческими работами здесь

Как читать файл построчно?
Есть метод: def getAnswer(self, question): f = self.openFileIfExists(self.storage) answer = False if f: ...

Как читать excel файл в pandas, если столбец содержит ведущие нули
Как читать excel файл в pandas, если столбец содержит ведущие нули. Например excel файл: Текст Номер test1 0013 test2 13 ...

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

Создайте файл data.txt по образцу урока. Напишите программу, которая открывает этот файл на чтение, построчно считывает
Создайте файл data.txt по образцу урока. Напишите программу, которая открывает этот файл на чтение, построчно считывает из него данные и...

Как заставить код читать текстовый файл построчно?
Вот фрагмент txt файла BARCODE|MASS|MASSRATE|PAYMENT|VALUE|INSRRATE|AIRRATE|INDEXTO ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru