Python: Работа с файлами
Рассмотрим работу с файлами: открытие, закрытие, чтение и запись.
Прежде чем приступать к работе с файлом, его следует открыть при помощи функции open().
f = open('cat.txt', 'r')
В первом аргументе указывается имя файла. Путь к файлу может быть относительным или абсолютным.
Во втором аргументе указывается режим открытия файла.
- r — открытие на чтение (по умолчанию)
- w — открытие на запись, содержимое файла удаляется, если файла не существует, то создаётся новый
- x — открытие на запись, если файла не существует, иначе исключение
- a — открытие на запись в конец файла
- b — открытие в двоичном режиме
- t — открытие в текстовом режиме (по умолчанию)
- + — открытие на чтение и запись
Режимы могут быть объединены. По умолчанию режим равен rt (чтение текстового файла). Для чтения в двоичном режиме используйте режим rb.
Третий параметр используется для кодировки при работе в текстовом режиме чтения файла.
После окончания работы с файлом, его нужно обязательно закрыть через метод close().
Создание файла и запись в него
Создадим файл с указанным именем и запишем в него две строчки текста при помощи метода write(). Я проделал это в режиме REPL.
file = open ('D:\cat.txt', 'w') file.write("First Line \n") file.write("Second Line") file.close()
При вводе в режиме REPL после ввода команды write() выводится возвращаемое значение метода — количество записанный в файл байт.
Параметр w в методе open() означает write, т.е. мы открываем файл в режиме записи. Метод возвращает объект TextIOWrapper.
file = open ('D:\cat.txt', 'w') type(file) #
Чтение файла
Прочитаем созданный файл. Есть два варианта: прочитать весь файл сразу целиком или считывать построчно.
file = open('D:\cat.txt', 'r') print(file.read()) # читаем целимом #print(file.readline()) # построчно #print(file.readline()) file.close()
В методе можно указать число символов для чтения (целое число).
file.read(2)
Файлы. Работа с файлами.
В данной статье мы рассмотрим встроенные средства python для работы с файлами: открытие / закрытие, чтение и запись.
Итак, начнем. Прежде, чем работать с файлом, его надо открыть. С этим замечательно справится встроенная функция open:
У функции open много параметров, они указаны в статье "Встроенные функции", нам пока важны 3 аргумента: первый, это имя файла. Путь к файлу может быть относительным или абсолютным. Второй аргумент, это режим, в котором мы будем открывать файл.
| Режим | Обозначение |
| ‘r’ | открытие на чтение (является значением по умолчанию). |
| ‘w’ | открытие на запись, содержимое файла удаляется, если файла не существует, создается новый. |
| ‘x’ | открытие на запись, если файла не существует, иначе исключение. |
| ‘a’ | открытие на дозапись, информация добавляется в конец файла. |
| ‘b’ | открытие в двоичном режиме. |
| ‘t’ | открытие в текстовом режиме (является значением по умолчанию). |
| ‘+’ | открытие на чтение и запись |
Режимы могут быть объединены, то есть, к примеру, ‘rb’ — чтение в двоичном режиме. По умолчанию режим равен ‘rt’.
И последний аргумент, encoding, нужен только в текстовом режиме чтения файла. Этот аргумент задает кодировку.
Чтение из файла
Открыли мы файл, а теперь мы хотим прочитать из него информацию. Для этого есть несколько способов, но большого интереса заслуживают лишь два из них.
Первый — метод read, читающий весь файл целиком, если был вызван без аргументов, и n символов, если был вызван с аргументом (целым числом n).
Ещё один способ сделать это — прочитать файл построчно, воспользовавшись циклом for:
Запись в файл
Теперь рассмотрим запись в файл. Попробуем записать в файл вот такой вот список:
Откроем файл на запись:
Запись в файл осуществляется с помощью метода write:
После окончания работы с файлом его обязательно нужно закрыть с помощью метода close:
Теперь попробуем воссоздать этот список из получившегося файла. Откроем файл на чтение (надеюсь, вы поняли, как это сделать?), и прочитаем строки.
Мы получили тот же список, что и был. В более сложных случаях (словарях, вложенных кортежей и т. д.) алгоритм записи придумать сложнее. Но это и не нужно. В python уже давно придумали средства, такие как pickle или json, позволяющие сохранять в файле сложные структуры.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Запись в файл Python. Перезапись файла Python
Высокоуровневый язык Python 3 имеет множество полезных средств, позволяющих взаимодействовать с текстовыми файлами. Вы можете как создавать документы для хранения информации, так и выполнять чтение, запись и удаление данных.
Сегодня поговорим о создании и записи файлов.
Создание файла, его открытие и закрытие
Работа с текстовым файлом в Python начинается с момента вызова функции open. Она принимает в качестве атрибутов путь к объекту на ПК и режим обработки. Вы можете указать абсолютный путь (это адрес размещения на жёстком диске) или относительный (речь идёт о координатах относительно папки проекта).
Что касается режима обработки файла, то при его выборе учитывайте его назначение («r» — для чтения, «w» — для записи). Таблица ниже позволит вам ознакомиться с режимами доступа к файлу в Python:

А вот пример простейшего взаимодействия с текстовым документом:
file = open("otus.txt", "w") file.write("hello world") file.close()
Здесь функция open принимает относительный путь, открывая его для записи. При этом, если в папке файл otus.txt будет отсутствовать, метод open создает его автоматически, после чего откроет для него нужный режим обработки.
Метод close закрывает файл, а это необходимо сделать, выполнив нужные вам действия с переменной file (иначе потеряете информацию). Впрочем, можно обойтись и без close, используя связку операторов with as (переменная, которая ссылается на файл, должна быть прописана после конструкции):
with open("otus.txt", "w") as file: file.write("hello world")
Метод write() для записи в файл в Python
В предыдущих примерах мы уже использовали метод write() . Он позволяет записывать любую строку в открытый файл. Помните, что строки в Python способны содержать не только текст, но и двоичные данные.
Запись в файл построчно выполняется посредством записи нужной вам строки с последующей записью \n — символа перевода строки.
Давайте ещё раз посмотрим на запись в файл с помощью метода write(). Синтаксис:
my_file.write(string);
my_file = open("otus.txt", "w") my_file.write("Люблю Python!\nЭто крутой язык!") my_file.close()
Код, представленный выше, создаст файл otus.txt , записав в него указанную строку.
Давайте теперь выполним запись списка поэлементно, где каждый элемент списка будет записан в новой строке:
lines = ["one", "two", "three"] with open(r"C:\otus.txt", "w") as file: for line in lines: file.write(line + '\n')
Этот код позволит создать небольшой массив lines, содержащий три строковых элемента: «one», «two» и «three». Благодаря функции open и связке операторов with as произойдёт открытие текстового файла otus.txt в корневом каталоге жёсткого диска C. Далее произойдёт запись всех элементов списка с помощью write. Символ \n обеспечит, чтобы каждая запись была выполнена с новой строки.
Работа с файлами
Взаимодействие с файлами в языке программирования Python предоставляет пользователю возможность хранить информацию, которая была обработана приложением, чтобы потом получать к ней доступ в любое удобное время. Базовые функции этого языка позволяют достаточно легко создавать, записывать и читать данные из файлов.
Создание и открытие
Чтобы получить возможность работать с файлом в Python 3, для начала его необходимо создать. Сделать это можно стандартными средствами операционной системы, перейдя в нужный каталог и создав новый документ с форматом txt. Однако аналогичное действие выполняется и с помощью метода open в языке программирования Python, которому надо передать в качестве параметров название файла и режим его обработки.
Следующий код демонстрирует получение переменной file ссылки на новый документ. Если запустить эту программу, она создаст текстовый файл test.txt в папке, где хранится исходный код.
file = open("test.txt", "w") file.close()
Если же файл с указанным именем test.txt уже существует в каталоге с кодом, программа просто продолжит работу с ним, не создавая новый документ. Как можно заметить, имя файла является первым параметром метода open. Сразу за ним следует специальная буква, которая обозначает метод обработки данных. В данном случае «w» означает write, то есть запись. Подробнее обо всех доступных режимах работы будет немного дальше, а сейчас важно усвоить, что после выполнения любых манипуляций над файлом, его обязательно следует закрыть с помощью функции close, чтобы гарантированно избежать потери информации.
В предыдущем примере для доступа к файлу был использован относительный путь, который не содержит в себе исчерпывающих сведений о местоположении объекта на жестком диске. Для того, чтобы задать их, необходимо в качестве первого аргумента функции open прописать абсолютный путь. В данном случае документ test.txt будет находиться в корневом каталоге на диске D, а не в папке программы.
file = open(r"D:\test.txt", "w") file.close()
Перед строковым литералом мы использовали символ r, для отключения экранирования. Иначе компилятор посчитает последовательность «\t» как символ табуляции и выдаст исключение.
Режим открытия
Ранее были упомянуты специальные символы, которые используются в языке Python при открытии файла. Они задают режим открытия файла. Указывают программе, как именно нужно открывать. Все они представлены в следующей таблице, которая содержит их сигнатуру и короткое описание назначения.
Символ
Значение
«r»
открытие для чтения (по умолчанию)
«w»
открытие для записи, а если его не существует по заданному пути, то создается новый
«x»
открытие для записи, но только если его еще не существует, иначе будет выдано исключение
«a»
открытие на дополнительную запись, чтобы информация добавлялась в конец документа
«b»
открытие в двоичном режиме
«t»
открытие в текстовом режиме (по умолчанию)
«+»
открытие одновременно на чтение и запись
Пользуясь вторым аргументом метода open, можно комбинировать различные режимы работы с файлами, указывая, к примеру, «rb» для чтения записанных данных в двоичном режиме.
Еще один пример: отличие «r+» и «w+» заключается в том, что во втором случае создастся новый файл, если такого нет. В первом же случае возникнет исключение. При использовании «r+» и «w+» файл будет открыт и на чтение и на запись. Пример обработки исключения разберем, когда будем рассматривать чтение файла.
Методы
Объект, который возвращает функция open, содержит ссылку на существующий файл. Также в нем имеется информация о созданном документе, представленная в виде четырех основных полей. Все они описаны в следующей таблице, которая содержит их имена и значение.
Свойство
Значение
name
возвращает имя файла
mode
возвращает режим, в котором был открыт
closed
возвращает true, если файл закрыт и true, если открыт
softspace
возвращает true, если при выводе данных из файла не следует отдельно добавлять символ пробела
Чтобы вывести на экран свойства файла, достаточно воспользоваться оператором доступа, то есть точкой, после чего передать это в качестве параметра уже знакомой функции print.
f = open(r"D:\test.txt", "w") print(f.name) f.close() D:\test.txt
Запись
В Python 3 запись в файл осуществляется с помощью метода write. Метод вызываем у объекта, который ссылается на существующий файл. Важно помнить, что для этого следует предварительно открыть документ с помощью функции open и указать режим записи символом «w». Метод write принимает в качестве аргумента данные, которые нужно поместить в текстовый файл. Следующий пример кода показывает запись строки «hello».
file = open("test.txt", "w") file.write("hello") file.close()
Если необходимо добавить новую информацию к записанным ранее данным, следует заново вызвать функцию open, указав ей в качестве режима работы символ «a». В противном случае все сведения из файла test.txt будут полностью удалены. В приведенном ниже примере кода текстовый документ открывается для дополнительной записи, после чего в него помещается строковый литерал “ world” с пробелом вначале. Таким образом в test.txt будет располагаться «hello world». После всего этого не нужно забывать об обязательном закрытии файла.
file = open("test.txt", "a") file.write(" world") file.close()
Именно так осуществляется самая простая процедура записи данных в текстовый файл. Стоит заметить, что язык программирования Python содержит массу дополнительных средств для более продвинутой работы с документами, которые также включают и улучшенную запись.
Запись бинарных данных
При записи бинарных данных, следует использовать режим «wb». Вот пример записи строки в кодировке utf8:
f = open('test.dat', 'wb') f.write(bytes('строка', 'utf8')) f.close()
Чтение
Для чтения информации из файла в Python 3, следует вызывать метод read через объект, который ссылается на существующий документ. Также необходимо не забывать указывать «r» в качестве второго параметра функции open при открытии текстового файла.
В следующем примере read возвращает информацию из test.txt в метод print, который затем выводит сведения на экран. Как и прежде, программа завершается закрытием документа при помощи метода close. Метод read также может принимать целочисленный параметр, который используется для передачи количества символов для чтения. К примеру, введя 5, программа прочитает только hello.
try: file = open("test.txt", "r") print(file.read()) file.close() except FileNotFoundError: print('Not found') except IOError: print('Something else')
Обратите внимание, что при открытии может возникнуть ошибка. Например, если указанный файл не найден. Поэтому нам пришлось обработать исключение. В Python можно воспользоваться конструкцией with, в таком случае не надо будет обрабатывать исключения и даже закрывать файл. Её рассмотрим ниже.
Есть еще один момент: нельзя делать закрытие в секции finally блока try. Если произойдет исключение при открытии файла, то в секции finally будет ошибка.
Чтение бинарных данных
В случае, если данные бинарного вида — следует использовать «rb» в функции open. Рассмотрим пример:
try: f = open("test.dat", "rb") b = f.read(1) str = "" while True: b = f.read(1) if b == b'': break str += b.hex() print(str) f.close() except IOError: print('error') 81d182d180d0bed0bad0b0
Здесь побайтно читается файл. Каждый байт приводит к строковому виду в шестнадцатеричном представлении. С помощью функции print выводится результирующая строка.
with as
Чтобы немного автоматизировать обработку текстовых файлов, рекомендуется использовать связку операторов with as. Благодаря им пропадает необходимость в вызове метода close для документа, который необходимо закрыть, поскольку это происходит автоматически. Все это демонстрируется в следующем фрагменте кода, где происходит считывание данных из test.txt. Как обычно, метод print используется для вывода строковой информации на экран.
with open('test.txt', 'r') as file: print(file.read())
Более того, в этом случае не нужно обрабатывать исключение. Если файла с указанным именем нету, то строки с вложенным кодом в операторе with выполняться не будут.
С помощью рассмотренных возможностей языка программирования Python, пользователь в состоянии достаточно легко выполнять основные операции по работе с чтением и записью информации в файлы.
