Работа с файловыми объектами: функция open, чтение и запись в файлы в Python
Файлы относятся к базовым типам данных языка Python. Это связующий интерфейс между кодом и именованными областями памяти компьютера. Файлы выполняют функцию «консервирования» объектов. Они позволяют сохранять любую информацию с ее последующей выгрузкой и обработкой. Мы рассмотрим, как осуществить запись в файл в Python и обратное чтение данных с практическими примерами.
Vsebina
Как открыть файл?
Работа с этим типом данных стартует со встроенной функции open. Она создает объект файла, который обеспечивает связь с внешним документом на компьютере. После того как вы вызовите функцию, можно выполнять операции чтения или записи в файлы в Python.
Для новичков работа с файлами покажется сложной. Они отличаются от привычных строк, чисел, словарей. Для взаимодействия с ними не используются литералы последовательностей или отображений, только методы.
Большая часть методов направлена на выполнение ввода и вывода информации, но есть и более специфические. Например, инструкция output.flush(), которая выталкивает на диск выходные буферы. Но мы начнем изучение с того, как открыть файл.
Первым делом нужно вызвать open(), в скобках передать функции, имя внешнего файла и режим работы с ним:
- r – означает, что по умолчанию откроется режим чтения;
- w – режим записи в файлы в Python;
- a – для записи информации в самый конец документа;
- b – обработка двоичных файлов;
- знак «+» означает чтение и запись одновременно.
Важное правило – все аргументы нужно указывать как литералы строк, то есть в кавычках и через запятую:
- >This_file = open(«C:odd», «w») #Пример вызова функции open в интегрированной среде разработки.
Как использовать файлы?
После того как файл открыт, вы можете использовать все его методы. Содержимое для чтения будет представлено в виде строк. Для записи в файлы в Python информация также должна иметь вид строковых объектов.
Список наиболее используемых операций:
- input.read() – вернет информацию в качестве единой строки;
- input.readline() – прочитать следующую строку;
- input.readlines() – представить файл для чтения целиком со списком строк;
- .write() – запись строк;
- .writelines() – запись всех строк;
- .close() – вручную закрыть документ.
Особенности работы с файлами
Вся информация, содержащаяся внутри файлов, представлена в виде строковых объектов. Поэтому прежде чем приступить к ее обработке, нужно выполнить преобразование данных. Используйте для этого встроенные методы int() или list(). А также выражения для форматирования строк.
Использовать метод close необязательно. Но при работе с flush освобождаются ресурсы ОС и происходит выталкивание выходных буферов. По умолчанию вывод происходит посредством промежуточных буферов. Когда осуществляется запись в файл в Python, информация не сразу попадает на диск, а только в момент закрытия.
Пример записи в файл
Разберем пример работы с текстовым файлом в интерактивном сеансе. Первый шаг – это открыть файл в IDLE. Предварительно его создавать нет необходимости:
- >первый_ф = open(«первый_файл.txt», «w»)
- >первый_ф.write(«Любой текстn») #Записываем строки
- 12
- >первый_ф.write(«И снова любой текстn»)
- 20
- >первый_ф.close() #Закрываем;
- >первый_ф = open(«первый_файл.txt»)
- >первый_ф.readline() #Читаем, то, что записано
- «Любой текстn»
После записи строки в файл, Python 3.0 возвращает число введенных символов. В предыдущей версии этого не происходит. В примере использовался символ конца строки n. Без него метод write запишет все сплошным текстом.
Если вы хотите прочесть содержимое файла без указания n в конце, воспользуйтесь методом read:
- >print(open(«первый_файл.txt»).read())
- любой текст;
- и снова любой текст;
Просмотреть каждую строку поочередно можно посредством итерации:
- >for x in open(«первый_файл.txt»):
- print(x, end = « »)
- любой текст
- и снова любой текст #Каждая новая строка будет выведена с отступом.
Сохранение базовых объектов языка Python в файл
В текстовый файл можно сохранять любые встроенные или созданные вручную объекты. Чтобы осуществить запись в файлы в Python построчно, каждый элемент нужно предварительно преобразовать в строку. Также нужно помнить, что методы не форматируют данные.
- >пример_2 = open(«второй_файл.txt», «w»)
- >Список = [1,8, «r»]
- >C, B, P = 34, 90, 56
- >Стр = «Набор символов»
- >пример_2.write(str(Список) + «n»)
- 12
- >пример_2.write(«%s, %s, %sn» % (C, B, P))
- 11
- >пример_2.write(Стр + «n»)
- 15
- >пример_2.close()
- >print(open(«второй_файл.txt»).read())
- [1, 8, «r»]
- 34, 90, 56
- набор символов
В этом примере сначала создается новый файловый объект «второй_файл.txt» для записи. Пяти именам присваиваются значения списка, строки и целых чисел. Перед записью каждый объект преобразуется в строку. В конце файл открывается с помощью встроенной функции print и метода read.
По тому же принципу осуществляется в Python запись словаря в файл. Необходимо вызвать функцию str и передать ей в качестве аргумента объект. Сложнее всего не сохранить данные, а извлечь их и превратить обратно в словари или числа.
Преобразовать строки в объекты языка поможет метод readline:
- >L = open(«второй_файл.txt»)
- >F = L.readline()
- >F
- «34, 90, 56n»
- >Numbers = F.split(«,») #По запятым разбить на подстроки
- >Numbers
- [«34», «90», «56n»]
- >Numbers = [int(x) for x in Numbers] #Преобразовать весь список
- >Numbers
- [34, 90, 56]
Запись объектов с помощью специальных модулей
В состав стандартной библиотеки входит модуль под названием pickle. Это чрезвычайно полезный инструмент для записи и обратного извлечения информации. Особенно в том случае, когда вы не доверяете источнику файла.
Модуль представляет собой универсальную утилиту, которая автоматически форматирует и преобразует данные. Чтобы записать объект любого типа (словарь), его достаточно передать pickle:
- >Словарь = {«восемь»: 8, «три»: 3, «ноль»: 0}
- >Словарь
- {«восемь»: 8, «три»: 3, «ноль»: 0}
- >документ = open(«мой_документ.pkl», «wb»)
- >import pickle
- >pickle.dump(Словарь, документ)
- >документ.close()
- >документ = open(«мой_документ.pkl», «rb»)
- >Д = pickle.load(документ)
- >Д
- {«восемь»: 8, «три»: 3, «ноль»: 0}
С модулем нет необходимости извлекать и преобразовывать данные вручную. Он сам выполняет сериализацию объектов в строку байтов и обратно. Для этого в аргументах open указывается wb – write binary.
Аналогично pickle, «консервировать» данные можно с помощью модуля Python – JSON. Запись в файл осуществляется методом dump. В качестве аргументов указываются сохраняемые объекты, которые автоматически сериализуются в строку JSON-формата.
- >import json
- >Словарь = {«восемь»: 8, «три»: 3, «ноль»: 0}
- >with open(«мой_документ.json», «w») as м_д:
- >json.dump(Словарь, м_д)
Существуют и более сложные способы работы с файлами. Например, операция сканирования, организация циклов записи. Чтобы увидеть весь перечень методов, воспользуйтесь в интерактивном сеансе функциями help или dir. Также в арсенале языка есть объекты, похожие на файлы, - сокеты, потоки командной оболочки и ввода-вывода.
- Что такое FTPS: принцип работы и отличия от обычного FTP
- Лучшие программы для записи образов на флешку
- Формат CDA – открытие и конвертирование в другие типы файлов
- О том, как сделать GIF
- Подробно о том, чем открыть M2TS
- Как создать папку на iPad: советы и рекомендации
- Подробно о том, как вставить PDF в PDF
- Как восстановить и распечатать документ с флешки, если он исчез?
- Как отправить ММС с телефона на компьютер? Как принять ММС на компьютере?
- Запись разговора на `Андроиде`. Как включить и отключить запись телефонного…
- Фрагментация - это... Дефрагментация - это... Программа для фрагментации
- Java: работа с файлами - запись, чтение, удаление
- Как разархивировать файл?
- Temporary Files: что это, и как их удалить?
- Скриптовые языки программирования: задачи, особенности и преимущества
- Сетевая модель данных
- Что такое утилиты
- Файл shs. Чем открыть формат?
- Функции в Python: def. Python 3 для начинающих
- Как записать фильм на диск с помощью программы для прожига
- Чем открыть swf на компьютере?