Метод file.readlines() в Python, получает список строк файла
Читает файл целиком, получает список строк из файла
Синтаксис:
file.readlines([sizehint])
Параметры:
- file — объект файла
- sizehint — int , количество байтов
Возвращаемое значение:
- списокстрок в текстовом режиме или байтовых объектов в двоичном режиме.
Описание:
Метод файла file.readlines() читает файловый объект file построчно, пока не достигнет конца файла EOF и возвращает список, содержащий строки или байтовые объекты файла в зависимости от режима, в котором открыт файл функцией open() . Конечный символ новой строки \n сохраняется в строке.
Если присутствует необязательный аргумент sizehint , то читаются целые строки, составляющие приблизительно sizehint байт (округляется до внутреннего размера буфера).
Пустая строка возвращается только по достижении конца файла, т. е. EOF встречается немедленно.
Помните, что файл может быть слишком большим для того чтобы разместиться полностью в оперативной памяти. В этом случае лучше считывать и обрабатывать файл кусками.
Примеры получения списка строк файла.
>>> text = 'This is 1st line\nThis is 2nd line\nThis is 3rd line\n' >>> fp = open('foo.txt', 'w+') >>> fp.write(text) # 51 >>> fp.seek(0) # 0 >>> fp.readlines() # ['This is 1st line\n', 'This is 2nd line\n', 'This is 3rd line\n'] >>> fp.seek(0) # 0 >>> fp.readlines(15) # ['This is 1st line\n'] >>> fp.readlines(20) # ['This is 2nd line\n', 'This is 3rd line\n'] >>> fp.readlines(20) # [] >>> fp.close()
Внимание! Функцию open() предпочтительнее использовать с оператором контекстного менеджера with . При использовании оператора with файл закрывать не нужно:
text = 'This is 1st line\nThis is 2nd line\nThis is 3rd line\n' # пишем with open('foo.txt', 'w') as fp: fp.write(text) #51 # читаем построчно с помощью `fp.readlines()` with open('foo.txt', 'r') as fp: data = fp.readlines() print(data) # ['This is 1st line\n', 'This is 2nd line\n', 'This is 3rd line\n'] # читаем построчно с помощью `for` with open('foo.txt', 'r') as fp: for line in fp: print(line.rstrip('\n')) # This is 1st line # This is 2nd line # This is 3rd line
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Метод file.close(), закрывает файл
- Метод file.flush(), очищает буфер чтения
- Метод file.fileno(), получает файловый дескриптор
- Метод file.isatty(), проверяет связь с терминалом
- Метод file.read(), читает весь файл или кусками
- Метод file.readline(), читает файл построчно
- Метод file.readlines(), получает список строк файла
- Метод file.seek(), перемещает указатель в файле
- Метод file.tell(), позиция указателя в файле
- Метод file.truncate(), усекает размер файла
- Метод file.write(), пишет данные в файл
- Метод file.writelines(), пишет список строк в файл
Построчные чтение и запись — Python: Основы текстового ввода-вывода
В предыдущем уроке мы упоминали, что последовательные вызовы метода write дописывают текст в конец. Но часто мы имеем итератор, выдающий некий текст построчно. Можно, конечно, написать цикл, однако есть способ и получше: метод writelines . Работает он так:
f = open("foo.txt", "w") f.writelines(["cat\n", "dog\n"]) f.close() f = open("foo.txt", "r") print(f.read()) # => cat # => dog f.close()
Как вы видите, все строчки записались в нужном порядке. Такой вариант записи предпочтителен, когда нужно записать большой объем текста, который вы получаете и обрабатываете строчка-за-строчкой. Можно предварительно накопить весь текст в одну большую строку, однако для этого может потребоваться большой объём памяти. Гораздо лучше записывать строчки по мере готовности и writelines для этого подходит идеально!
Чтение файла построчно
Файл построчно можно не только писать, но и читать:
f = open("foo.txt") f.readline() # 'cat\n' f.readline() # 'dog\n' f.readline() # '' f.close()
Здесь Python сам понимает, что строчки в тексте нужно разделять по символу перевода строки. Вызов readline перемещает позицию к следующей строке и как только текст закончится, все последующие вызовы будут возвращать пустую строку.
Заметьте, строчки текста содержат и сами символы перевода строки.
Метод readline довольно удобен, когда мы хотим управлять процессом чтения из файла. Однако часто нужно просто прочитать все строчки текста. Для этого нужно всего навсего. проитерировать файловый объект! При этом вы получите итератор строчек, который можно читать в цикле:
f = open("foo.txt") for l in f: print(l) # => cat # => dog f.close()
Если не указать режим, как я сделал в этот раз, то файл откроется на чтение. Удобно.
Подумайте, почему напечатались лишние пустые строчки.
Итератор строчек файла, как и положено, ленив. Он вычитывает строки лишь по мере необходимости. А останавливается тогда, когда читать уже становится нечего.
Ленивость позволяет, в частности, не дочитать файл:
f = open("foo.txt") for l in f: print(l) break # => cat print(f.read()) # => dog f.close()
Если же нужно получить сразу все строчки текста в виде списка, то можно вызывать метод readlines и получить тот самый список.
Потоковая обработка больших файлов
Использование итераторов очень удобно для потоковой обработки файлов. При потоковой обработке нет необходимости хранить весь файл в памяти, а значит обрабатываемые файлы могут быть очень большими! Вот так может выглядеть скрипт, который нумерует строчки входного файла и записывает в выходной:
input_file = open("input.txt", "r") output_file = open("output.txt", "w") for i, line in enumerate(input_file, 1): output_file.write(f"i>) line>") input_file.close() output_file.close()
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Д. П. Кириенко. Программирование на языке Python (школа 179 г. Москвы)
Для каждого файла, с которым необходимо производить операции ввода-вывода, нужно связать специальный объект — поток. Открытие файла осуществляется функцией open , которой нужно передать два параметра. Первый параметр (можно также использовать именованный параметр file ) имеет значение типа str , в котором записано имя открываемого файла. Второй параметр (можно также использовать именованный параметр mode ) —это значение типа str , которое равно «r» , если файл открывается для чтения данных (read), «w» , если на запись (write), при этом содержимое файла очищается, и «a» — для добавления данных в конец файла (append). Если второй параметр не задан, то считается, что файл открывается в режиме чтения.
Функция open возвращает ссылку на файловый объект, которую нужно записать в переменную, чтобы потом через данный объект использовать методы ввода-вывода. Например:
input = open('input.txt', 'r') output = open('output.txt', 'w')
Чтение данных из файла
Для файла, открытого на чтение данных, можно вызывать следующие методы, позволяющие читать данные из файла.
Метод readline() считывает одну строку из файла (до символа конца строки ‘\n’ , возвращается считанная строка вместе с символом ‘\n’ . Если считывание не было успешно (достигнут конец файла), то возвращается пустая строка. Для удаления символа ‘\n’ из конца файла удобно использовать метод строки rstrip() . Например: s = s.rstrip() .
Метод readlines() считывает все строки из файла и возвращает список из всех считанных строк (одна строка — один элемент списка). При этом символы ‘\n’ остаются в концах строк.
Метод read() считывает все содержимое из файла и возвращает строку, которая может содержать символы ‘\n’ . Если методу read передать целочисленный параметр, то будет считано не более заданного количества символов. Например, считывать файл побайтовопосимвольно можно при помощи метода read(1) .
Вывод данных в файл
Данные выводятся в файл при помощи метода write , которому в качестве параметра передается одна строка. Этот метод не выводит символ конца строки ‘\n’ (как это делает функция print при стандартном выводе), поэтому для перехода на новую строку в файле необходимо явно вывести символ ‘\n’ .
Также можно выводить данные в файл при помощи функции print , если передать ей еще один именованный параметр file , равный ссылке на открытый файл. Например:
output = open('output.txt', 'w') print(a, b, c, file=output)
Закрытие файла
После окончания работы с файлом необходимо закрыть его при помощи метода close() .
Пример
Следующая программа считывает все содержимое файла input.txt , записывает его в переменную s , а затем выводит ее в файл output.txt .
input = open('input.txt', 'r') output = open('output.txt', 'w') s = input.read() output.write(s) input.close() output.close()
А вот аналогичная программа, но читающая данные посимвольно:
input = open('input.txt', 'r') output = open('output.txt', 'w') c = input.read(1) while len(c) > 0: output.write(c) c = input.read(1) input.close() output.close()
file.readlines
Считать файл можно также при помощи конструктора list():
with open('my_file.txt') as f:
my_lines = list(f) # ['The first line.\n', '\n', 'The last line.\n']
Помните, что файл может быть слишком большим для того чтобы разместиться полностью в оперативной памяти. В этом случае лучше считывать и обрабатывать файл кусками.
- Для считывания файла кусками используйте read().
- Для считывания по одной строке используйте readline().
- Для записи строк можно использовать writelines().
Синонимы поиска: file.readlines, file, readlines