Python прочитать файл в список

Обновлено: 03.07.2024

Иногда недостаточно просто отображать данные на консоли. Данные могут быть очень большими, и только ограниченный объем данных может отображаться на консоли, поскольку память является энергозависимой, невозможно восстановить сгенерированные программой данные снова и снова.

Реализация обработки файлов немного длиннее и сложнее в других языках программирования, но в Python она проще и короче.

В Python файлы обрабатываются в двух режимах как текстовые или двоичные. Файл может быть в текстовом или двоичном формате, и каждая строка файла заканчивается специальным символом. Следовательно, файловая операция может выполняться в следующем порядке:

Открытие файла

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

Доступ к файлам можно получить с помощью различных режимов, таких как чтение, запись или добавление. Ниже приведены подробные сведения о режимах доступа для открытия файла.

Режим доступа Описание
1 r Он открывает файл в режиме только для чтения. Указатель файла существует в начале. Файл по умолчанию открывается в этом режиме, если не передан режим доступа.
2 rb Открывает файл в двоичном формате только для чтения. Указатель файла существует в начале файла.
3 г + Открывает для чтения и записи. Указатель файла также существует в начале.
4 rb + в двоичном формате. Указатель файла присутствует в начале файла.
5 w Только для записи. Он перезаписывает файл, если он существовал ранее, или создает новый, если файл с таким именем не существует. Указатель имеется в начале файла.
6 wb Открывает файл для записи только в двоичном формате. Перезаписывает файл, если он существует ранее, или создает новый, если файл не существует. Указатель файла существует в начале файла.
7 w + Для записи и чтения обоих. Он отличается от r + в том смысле, что он перезаписывает предыдущий файл, если он существует, тогда как r + не перезаписывает ранее записанный файл. Он создает новый файл, если файл не существует. Указатель файла существует в начале файла.
8 wb + Он открывает файл для записи и чтения в двоичном формате. Указатель файла существует в начале файла.
9 а В режиме добавления. Указатель файла существует в конце ранее записанного файла, если он существует. Он создает новый файл, если не существует файла с таким же именем.
10 ab В режиме добавления в двоичном формате. Указатель существует в конце ранее записанного файла. Он создает новый файл в двоичном формате, если не существует файла с таким же именем.
11 а + Он открывает файл для добавления и чтения. Указатель файла остается в конце файла, если файл существует. Он создает новый файл, если не существует файла с таким же именем.
12 ab + Открывает файл для добавления и чтения в двоичном формате. Указатель файла остается в конце файла.

Давайте посмотрим на простой пример, чтобы открыть файл с именем «file.txt»(хранящийся в том же каталоге) в режиме чтения и распечатать его содержимое на консоли.

В приведенном выше коде мы передали filename в качестве первого аргумента и открыли файл в режиме чтения, поскольку мы упомянули r в качестве второго аргумента. Fileptr содержит объект файла, и если файл открывается успешно, он выполнит оператор печати.

Метод close()

После того, как все операции будут выполнены с файлом, мы должны закрыть его с помощью нашего скрипта Python, используя метод close(). Любая незаписанная информация уничтожается после вызова метода close() для файлового объекта.

Мы можем выполнить любую операцию с файлом извне, используя файловую систему, которая в данный момент открыта в Python; поэтому рекомендуется закрыть файл после выполнения всех операций.

Синтаксис использования метода close() приведен ниже.

Рассмотрим следующий пример.

После закрытия файла мы не можем выполнять какие-либо операции с файлом. Файл необходимо правильно закрыть. Если при выполнении некоторых операций с файлом возникает какое-либо исключение, программа завершается, не закрывая файл.

Мы должны использовать следующий метод, чтобы решить такую проблему.

Оператор with

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

Синтаксис для открытия файла с помощью оператора приведен ниже.

Преимущество использования оператора with заключается в том, что он обеспечивает гарантию закрытия файла независимо от того, как закрывается вложенный блок.

Всегда рекомендуется использовать оператор with для файлов. Если во вложенном блоке кода возникает прерывание, возврат или исключение, тогда он автоматически закрывает файл, и нам не нужно писать функцию close() . Это не позволяет файлу исказиться.

Рассмотрим следующий пример.

Запись файла

Чтобы записать текст в файл, нам нужно открыть файл с помощью метода open с одним из следующих режимов доступа.

  • w: он перезапишет файл, если какой-либо файл существует. Указатель файла находится в начале файла.
  • a: добавит существующий файл. Указатель файла находится в конце файла. Он создает новый файл, если файл не существует.

Скриншот файла file2.txt

Снимок файла к примеру 1

Мы открыли файл в режиме w. Файл file1.txt не существует, он создал новый файл, и мы записали его содержимое с помощью функции write().

Снимок файла file2.txt

Снимок файла к примеру 2

Мы видим, что содержимое файла изменено. Мы открыли файл в режиме и добавили содержимое в существующий файл file2.txt.

Чтобы прочитать файл с помощью сценария Python, Python предоставляет метод read(). Метод read() считывает строку из файла. Он может читать данные как в текстовом, так и в двоичном формате.

Синтаксис метода read() приведен ниже.

Рассмотрим следующий пример.

В приведенном выше коде мы прочитали содержимое file2.txt с помощью функции read(). Мы передали значение счетчика как десять, что означает, что он будет читать первые десять символов из файла.

Если мы используем следующую строку, она распечатает все содержимое файла.

Чтение файл для цикла

Мы можем прочитать файл, используя цикл for. Рассмотрим следующий пример.

Чтение файла построчно

Python упрощает чтение файла построчно с помощью метода readline(). Метод readline() читает строки файла с самого начала, т. е. если мы используем его два раза, мы можем получить первые две строки файла.

Рассмотрим следующий пример, который содержит функцию readline(), которая читает первую строку нашего файла «file2.txt», содержащую три строки.

Пример 1: чтение строк с помощью функции readline()

Мы вызывали функцию readline() два раза, поэтому она считывает две строки из файла.

Python также предоставляет метод readlines(), который используется для чтения строк. Возвращает список строк до конца файла(EOF).

Пример 2: чтение строк с помощью функции readlines()

Создание нового файла

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

  • x: создает новый файл с указанным именем. Вызовет ошибку, если существует файл с таким же именем.
  • a: создает новый файл с указанным именем, если такого файла не существует. Он добавляет содержимое к файлу, если файл с указанным именем уже существует.
  • w: создает новый файл с указанным именем, если такого файла не существует. Он перезаписывает существующий файл.

Позиции указателя файла

Python предоставляет метод tell(), который используется для печати номера байта, в котором в настоящее время существует указатель файла. Рассмотрим следующий пример.

Изменение позиции указателя файла

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

Для этой цели Python предоставляет нам метод seek(), который позволяет нам изменять положение указателя файла извне.

Синтаксис для использования метода seek():

Метод seek() принимает два параметра:

Рассмотрим следующий пример.

Модуль OS Python

Переименование файла

Модуль Python os обеспечивает взаимодействие с операционной системой. Модуль os предоставляет функции, которые участвуют в операциях обработки файлов, таких как переименование, удаление и т. д. Он предоставляет нам метод rename() для переименования указанного файла в новое имя. Синтаксис для использования метода rename() приведен ниже.

Приведенный выше код переименовал текущий file2.txt в file3.txt.

Удаление файла

Модуль os предоставляет метод remove(), который используется для удаления указанного файла. Синтаксис метода remove() приведен ниже.

Создание нового каталога

Метод mkdir() используется для создания каталогов в текущем рабочем каталоге. Синтаксис для создания нового каталога приведен ниже.

Метод getcwd()

Этот метод возвращает текущий рабочий каталог.

Синтаксис для использования метода getcwd() приведен ниже.

Изменение текущего рабочего каталога

Метод chdir() используется для изменения текущего рабочего каталога на указанный каталог.

Синтаксис для использования метода chdir():

Удаление каталога

Метод rmdir() используется для удаления указанного каталога.

Синтаксис использования метода rmdir() приведен ниже.

Он удалит указанный каталог.

Запись вывода Python в файлы

В Python есть требования для записи вывода скрипта Python в файл.

Метод check_call() подпроцесса модуля используется для выполнения сценария Python и записи вывода этого сценария в файл.

Следующий пример содержит два сценария Python. Сценарий file1.py выполняет сценарий file.py и записывает свои выходные данные в текстовый файл output.txt.

Методы, связанные с файлом

Существуют следующие методы для управления файлами в различных операционных системах.

В данной теме представлены примеры записи и чтения информации для текстовых файлов.

Содержание

  • 1. Чтение/запись списка, содержащего n целых чисел
  • 2. Чтение/запись списка, содержащего строки
  • 3. Чтение/запись кортежа, содержащего объекты чисел с плавающей запятой
  • 4. Чтение/запись кортежа содержащего разнотипные объекты
  • 5. Чтение/запись словаря
  • 6. Чтение/запись двумерной матрицы целых чисел, представленной в виде списка
  • 7. Чтение/запись множества, которое содержит целые числа
  • 8. Чтение/запись данных разных типов: список и кортеж

Поиск на других ресурсах:

1. Чтение/запись списка, содержащего n целых чисел

В примере демонстрируются следующие операции:

  • создание списка из 10 случайных чисел;
  • сохранение списка в текстовом файле;
  • чтение из файла в новый список с целью контроля.

Текст программы следующий:

Результат работы программы

2. Чтение/запись списка, содержащего строки

При чтении/записи строк не нужно реализовывать дополнительные преобразования из одного типа в другой, так как данные из файла читаются в виде строк.

Результат работы программы

3. Чтение/запись кортежа, содержащего объекты чисел с плавающей запятой

Пример демонстрирует запись и чтение кортежа, который содержит объекты чисел с плавающей запятой.

Результат работы программы

Вид файла myfile5.txt

4. Чтение/запись кортежа содержащего разнотипные объекты

В случае, если кортеж содержит объекты разных типов при записи/чтении важно придерживаться последовательности этапов конвертирования объектов в нужный тип. Ниже приведен пример записи и чтения кортежа, который содержит объекты целого, логического и строчного типов.

Результат выполнения программы

5. Чтение/запись словаря

Словарь также можно записывать в файл. В данном примере записывается и читается словарь, который содержит перечень номеров дней недели и их названий. Для облегчения чтения данных каждый элемент словаря размещается в отдельной строке.

Результат работы программы

Вид файла myfile6.txt

6. Чтение/запись двумерной матрицы целых чисел, представленной в виде списка

В примере демонстрируется запись и чтение двумерной матрицы целых чисел размерностью 3*4.

Результат работы программы

Вид файла myfile8.txt

7. Чтение/запись множества, которое содержит целые числа

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

Результат работы программы

Вид файла myfile7.txt

8. Чтение/запись данных разных типов: список и кортеж

Чтобы записать в текстовый файл данные разных базовых типов нужно последовательно записать данные одного типа, затем другого типа. При считывании таких данных нужно придерживаться такого самого порядка чтобы не нарушить полученную структуру данных.

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

Как мне прочитать каждую строку файла в Python и сохранить каждую строку как элемент в списке?

Я хочу прочитать файл построчно и добавить каждую строку в конец списка.

Не используйте file.readlines() в for -loop, сам файл объекта достаточно: lines = [line.rstrip('\n') for line in file] В случае, если вы работаете с большими данными, использование readlines() не очень эффективно, так как это может привести к MemoryError . В этом случае лучше перебрать файл, используя for line in f: и работая с каждой line переменной. Я проверил профиль памяти различными способами, приведенными в ответах, используя процедуру, упомянутую здесь . Использование памяти намного лучше, когда каждая строка читается из файла и обрабатывается, как предлагает @DevShark здесь . Удерживать все строки в объекте коллекции не очень хорошая идея, если память ограничена или размер файла велик. Время выполнения одинаково в обоих подходах. Кроме того, .rstrip() будет работать немного быстрее, если вы удаляете пробелы с концов линий. Oneliner: with open(filename) as f: content = [i.strip() for i in f.readlines()]

или с удалением символа новой строки:

Лучше, используйте f.read().splitlines() , который действительно удаляет новые строки Вторая версия, с for line in open(filename) безопасным? То есть файл будет автоматически закрыт? Лучше всего читать файл по одной строке за раз, а не читать весь файл в память все сразу. Это плохо масштабируется с большими входными файлами. Смотрите ответ ниже Роберт. lines = [x.rstrip('\n') for x in open('data\hsf.txt','r')] Если я пишу таким образом, как я могу закрыть файл после прочтения? Да, к тому, что здесь делают другие, хотя использование open «менеджера контекста» (или какого-либо другого гарантированного способа его закрытия) не является «лучшей практикой», но на самом деле это не один из тех случаев - когда у объекта больше нет ссылок для него будет сборка мусора и закрытие файла, что должно произойти сразу после ошибки или нет, когда обработка списка завершена.

Это более явно, чем необходимо, но делает то, что вы хотите.

Я предпочитаю этот ответ, поскольку он не требует загрузки всего файла в память (в этом случае он все еще добавляется, array хотя могут быть и другие обстоятельства). Конечно, для больших файлов этот подход может смягчить проблемы. Присоединение к массиву происходит медленно. Я не могу придумать случай использования, где это лучшее решение. @haccks это лучше, потому что он не загружает весь файл в память или там больше? Примечание: это решение не убирает новые строки. Это решение загружает весь файл в память. Я не знаю, почему люди так думают.

Это даст «массив» строк из файла.

open возвращает файл, который может быть повторен. Когда вы перебираете файл, вы получаете строки из этого файла. tuple может взять итератор и создать для вас экземпляр кортежа из предоставленного вами итератора. lines это кортеж, созданный из строк файла.

@MarshallFarrier Попробуйте lines = open(filename).read().split('\n') вместо этого. @Vanuan Поскольку после запуска строки не остается никакой ссылки на файл, деструктор должен автоматически закрыть файл. @NoctisSkytower Я нахожу lines = open(filename).read().splitlines() немного чище и считаю, что он также лучше обрабатывает окончания строк DOS. @ mklement0 Предполагая, что файл состоит из 1000 строк, a list занимает на 13,22% больше места, чем a tuple . Результаты приходят от from sys import getsizeof as g; i = [None] * 1000; round((g(list(i)) / g(tuple(i)) - 1) * 100, 2) . Создание a tuple занимает примерно на 4,17% больше времени, чем создание list (со стандартным отклонением 0,16%). Результаты приходят от бега from timeit import timeit as t; round((t('tuple(i)', 'i = [None] * 1000') / t('list(i)', 'i = [None] * 1000') - 1) * 100, 2) 30 раз. Мое решение предпочитает пространство над скоростью, когда необходимость в изменчивости неизвестна.

Если вы хотите \n включить:

Если вы не хотите, чтобы \n включены:

В соответствии с Методами Файловых Объектов Питона , самый простой способ преобразовать текстовый файл в list :

Если вам просто нужно перебрать строки текстового файла, вы можете использовать:

Использование with и readlines() :

Если вам не нужно закрывать файл, эта однострочная работа работает:

Вы можете просто сделать следующее, как было предложено:

Обратите внимание, что у этого подхода есть 2 недостатка:

1) Вы храните все строки в памяти. В общем случае это очень плохая идея. Файл может быть очень большим, и вам может не хватить памяти. Даже если он не большой, это просто пустая трата памяти.

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

Лучший подход для общего случая был бы следующим:

Где вы определяете свою функцию процесса так, как хотите. Например:

(Реализация Superman класса оставлена ​​для вас как упражнение).

Это будет хорошо работать при любом размере файла, и вы пройдете его всего за 1 проход. Как правило, именно так будут работать универсальные парсеры.

Это было именно то, что мне было нужно - и спасибо за объяснение минусов. Будучи новичком в Python, удивительно понять, почему решение - это решение. Ура! Подумай немного больше Кори. Вы действительно хотите, чтобы ваш компьютер читал каждую строку, ничего не делая с этими строками? Конечно, вы можете понять, что вам всегда нужно обрабатывать их так или иначе. Вам всегда нужно что-то делать со строками. Это может быть так же просто, как печатать строки или считать их. Нет никакого смысла в том, чтобы ваш процесс читал строки в памяти, но ничего с этим не делал. Вам всегда нужно что-то делать с ними. Я думаю, что вы пытаетесь подчеркнуть, что вы можете применить функцию ко всем сразу, а не по одному. Это действительно так иногда. Но это очень неэффективно с точки зрения памяти и не позволяет вам читать файлы, если его размер больше, чем у вашего Ram. Вот почему типичные парсеры работают так, как я описал. @PierreOcinom это правильно. Учитывая, что файл открыт в режиме только для чтения, вы не можете изменить исходный файл с кодом выше. Чтобы открыть файл для чтения и записи, используйте open('file_path', 'r+')

Данные в список

Предположим, что у нас есть текстовый файл с нашими данными, как в следующих строках:

Содержание текстового файла:

  • Откройте cmd в том же каталоге (щелкните правой кнопкой мыши и выберите cmd или PowerShell)
  • Запустите python и в интерпретаторе напишите:

Скрипт Python:

Используя append:

Или:

Или:

Или:

read().splitlines() предоставляется вам Python: это просто readlines() (что, вероятно, быстрее, так как это менее расточительно). @EricOLebigot из показанных примеров выглядит read().splitlines() и readlines() не выдает тот же результат. Вы уверены, что они эквивалентны? Если вы используете только readlines, вам нужно использовать метод strip, чтобы избавиться от \ n в тексте, поэтому я изменил последние примеры, используя понимание списка, чтобы иметь одинаковый вывод в обоих случаях. Итак, если вы используете read (). Readlines (), у вас будет «чистый» элемент со строкой и без символа перевода строки, в противном случае вы должны сделать то, что видите в приведенном выше коде. Верно. Обратите внимание, что в приведенном выше коде все символы strip() должны быть rstrip("\n") или пробелы вокруг строки удаляются. Кроме того, readlines() в понимании списка нет никакого смысла : лучше просто выполнять итерации по файлу, так как он не тратит время и память, создавая промежуточный список строк.

Чтобы прочитать файл в список, вам нужно сделать три вещи:

  • Открыть файл
  • Читать файл
  • Хранить содержимое в виде списка

К счастью, Python делает это очень легко, поэтому самый короткий способ прочитать файл в список:

Однако я добавлю еще несколько объяснений.

Открытие файла

Я предполагаю, что вы хотите открыть определенный файл, и вы не имеете дело непосредственно с дескриптором файла (или с дескриптором файла). Наиболее часто используемая функция для открытия файла в Python - open это один обязательный аргумент и два необязательных в Python 2.7:

  • Имя файла
  • Режим
  • Буферизация (я проигнорирую этот аргумент в этом ответе)

Имя файла должно быть строкой, которая представляет путь к файлу . Например:

Обратите внимание, что необходимо указать расширение файла. Это особенно важно для пользователей Windows, поскольку такие расширения файлов, как .txt или .doc , и т. Д. По умолчанию скрыты при просмотре в проводнике.

Второй аргумент - mode это r по умолчанию, что означает «только для чтения». Это именно то, что вам нужно в вашем случае.

Но если вы действительно хотите создать файл и / или записать в файл, вам понадобится другой аргумент. Есть отличный ответ, если вы хотите обзор .

Для чтения файла вы можете опустить mode или передать его явно:

Оба откроют файл в режиме только для чтения. Если вы хотите прочитать в двоичном файле в Windows, вам нужно использовать режим rb :

На других платформах 'b' (двоичный режим) просто игнорируется.

Теперь, когда я показал, как с open файлом, давайте поговорим о том факте, что вам всегда это нужно close снова. В противном случае он будет хранить открытый дескриптор файла до тех пор, пока не завершится процесс (или Python не обработает дескриптор файла).

Пока вы можете использовать:

Это не удастся закрыть файл, когда что-то между open и close выдает исключение. Вы можете избежать этого, используя try и finally :

Однако Python предоставляет контекстные менеджеры, которые имеют более симпатичный синтаксис (но open он почти идентичен тому, что try и finally выше):

Последний подход - рекомендуемый подход для открытия файла в Python!

Чтение файла

Хорошо, вы открыли файл, теперь как его прочитать?

open Функция возвращает file объект , и он поддерживает протокол итерации питонов. Каждая итерация даст вам строку:

Это напечатает каждую строку файла. Однако обратите внимание, что каждая строка будет содержать символ новой строки \n в конце (возможно, вы захотите проверить, построен ли ваш Python с поддержкой универсальной новой строки - в противном случае вы могли бы также использовать \r\n в Windows или \r на Mac новые строки). Если вы не хотите, вы можете просто удалить последний символ (или два последних символа в Windows):

Но последняя строка не обязательно имеет завершающий символ новой строки, поэтому не стоит ее использовать. Можно проверить, заканчивается ли он завершающим символом новой строки, и, если это так, удалить его:

Но вы можете просто удалить все пробелы (включая \n символ) в конце строки , это также удалит все другие конечные пробелы, поэтому вы должны быть осторожны, если они важны:

Однако, если строки заканчиваются \r\n (Windows, "новые строки"), .rstrip() это также позаботится о \r !

Хранить содержимое в виде списка

Теперь, когда вы знаете, как открыть файл и прочитать его, пришло время сохранить содержимое в списке. Самый простой вариант - использовать list функцию:

В случае, если вы хотите убрать завершающие символы новой строки, вы можете использовать вместо этого понимание списка:

Или даже проще: .readlines() метод file объекта по умолчанию возвращает list строку:

Это также будет включать в себя завершающие символы новой строки, если вы не хотите их использовать, я бы порекомендовал [line.rstrip() for line in f] подход, потому что он избегает хранения двух списков, содержащих все строки в памяти.

Есть дополнительная опция для получения желаемого результата, однако она довольно «неоптимальная»: read полный файл в строке, а затем разделенный на новые строки:

Они позаботятся о конце новой строки, потому что split персонаж не включен. Однако они не идеальны, потому что вы сохраняете файл как строку и как список строк в памяти!

В Python есть несколько способов прочитать текстовый файл. В этой статье мы рассмотрим функцию open() , методы read() , readline() , readlines() , close() и ключевое слово with .

Как открыть текстовый файл в Python с помощью open()

Если вы хотите прочитать текстовый файл с помощью Python, вам сначала нужно его открыть.

Вот так выглядит основной синтаксис функции open() :

Имена файлов и правильные пути

Если текстовый файл, который нужно открыть, и ваш текущий файл находятся в одной директории (папке), можно просто указать имя файла внутри функции open() . Например:

На скрине видно, как выглядят файлы, находящиеся в одном каталоге:


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

В этом примере файл со случайным текстом находится в папке, отличной от той, где находится файл с кодом main.py:


В таком случае, чтобы получить доступ к этому файлу в main.py, вы должны включить имя папки с именем файла.

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

Необязательный параметр режима в open()

При работе с файлами существуют разные режимы. Режим по умолчанию – это режим чтения.

Он обозначается буквой r .

Вы также можете опустить mode= и просто написать «r» .

Существуют и другие типы режимов, такие как «w» для записи или «a» для добавления. Мы не будем вдаваться в подробности о других режимах, потому что в этой статье сосредоточимся исключительно на чтении файлов.

Полный список других режимов можно найти в документации.

Дополнительные параметры для функции open() в Python

Функция open() может также принимать следующие необязательные параметры:

  • buffering
  • encoding
  • errors
  • newline
  • closefd
  • opener

Если вы хотите узнать больше об этих опциональных параметрах, можно заглянуть в документацию.

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

Метод readable(): проверка доступности файла для чтения

Если вы хотите проверить, можно ли прочитать файл, используйте метод readable() . Он возвращает True или False .

Следующий пример вернет True , потому что мы находимся в режиме чтения:

Если бы мы изменили этот пример на режим «w» (для записи), тогда метод readable() вернул бы False :

Что такое метод read() в Python?

Метод read() будет считывать все содержимое файла как одну строку. Это хороший метод, если в вашем текстовом файле мало содержимого .

В этом примере давайте используем метод read() для вывода на экран списка имен из файла demo.txt:

Запустим этот код и получим следующий вывод:

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

Если мы изменим предыдущий пример, мы сможем вывести только первое слово, добавив число 4 в качестве аргумента для read() .

Если аргумент размера опущен или число отрицательное, то будет прочитан весь файл.

Что такое метод close() в Python?

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

Вот пример того, как закрыть файл demo.txt:

Как использовать ключевое слово with в Python

Один из способов убедиться, что ваш файл закрыт, – использовать ключевое слово with . Это считается хорошей практикой, потому что файл закрывается не вручную, а автоматически. Более того, это просто крайне удобно и защищает вас от ошибок, которые могут возникнуть, если вы случайно забудете закрыть файл.

Давайте попробуем переписать наш пример, используя ключевое слово with :

Что такое метод readline() в Python?

Этот метод читает одну строку из файла и возвращает ее.

В следующем примере у нас есть текстовый файл с двумя предложениями:

Если мы воспользуемся методом readline() , он выведет нам только первое предложение нашего файла.

Этот метод также принимает необязательный параметр размера. Мы можем изменить наш пример, добавив число 7. В таком случае программа считает и выведет нам только фразу This is :

Что такое метод readlines() в Python?

Этот метод читает и возвращает список всех строк в файле.

Предположим, у нас есть текстовый файл demo.txt со списком покупок:

В следующем примере давайте выведем наши продукты в виде списка с помощью метода readlines() .

Как прочитать текстовый файл при помощи цикла for

В качестве альтернативы методам чтения можно использовать цикл for .

Давайте распечатаем все элементы файла demo.txt, перебирая объект в цикле for .

Запустим наш код и получим следующий результат:

Заключение

Итак, если вы хотите прочитать текстовый файл в Python, вам сначала нужно его открыть.

Если текстовый файл и ваш текущий файл, где вы пишете код, находятся в одной директории, можно просто указать имя файла в функции open() .

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

Функция open() принимает необязательный параметр режима. Режим по умолчанию – чтение ( «r» ).

Чтобы проверить, можно ли прочитать текстовый файл, вы можете использовать метод readable() . Он возвращает True , если файл можно прочитать, или False в противном случае.

Метод read() будет читать все содержимое файла как одну строку.

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

Метод readline() будет считывать только одну строку из файла и возвращать ее.

Метод readlines() прочитает и вернет все строки в файле в виде списка.

Также для чтения содержимого файлов можно использовать цикл for .

Надеемся, вам понравилась эта статья. Желаем удачи в вашем путешествии по миру Python!

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