Языки программирования

Работа с файлами

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

Представьте ситуацию: есть интернет-сайт с курсами валют. И множество сервисов автоматически эти курсы валют получают с этого сайта. Каждый запрос — это некие ресурсы в базе данных. Чтобы не нагружать базу данных мы в наш файл будем сохранять курс валют и при обновлении пересохранять данные. А те кому нужны эти курсы пусть уже получают их с этого файла, и наша БД будет дышать свободно.

Прежде чем приступить к работе с файлами откройте рекомендуемую мной книгу
«Изучаем Python» Марка Лутца на 289 странице и бегло пройдитесь по главе.

Создаем файл

В коде выше мы создали новый файл с названием myfile.txt. Этот файл пустой и в данный момент контроль над ним присвоен в переменную f. В примере я вписал только название файла, вам же нужно прописывать полный путь для его сохранения. Все зависит от вашей операционной системы.

Если забыли, что значит w в функции open() прочтите ранее написанный урок спецификаторы в Python.

Запись в файл

Выше мы создали файл со спецификатором w, который делает перезапись в файл если в нем есть данные. Как бы просто пересоздает его.

Эти строки запишем в файл с новой строки потому что указан \n. Каждый раз, получая файл со спецификатором w мы его просто переписываем. Чтобы сделать дозапись в файл, открывайте его со спецификатором a. Пример: f = open('myfile.txt', 'a').

Не забывайте освобождать память вашей системы закрытием файла после работы с ним. f.close().

Чтение файла с readline()

Если нам необходимо только получать данные с файла мы его будем получать со спецификатором r. Пример: f = open('myfile.txt', 'r'). Теперь откройте книгу Марка Лутца на 290 странице и посмотрите список методов при работе с файлами. Там есть метод readline, который позволит нам читать данные построчно.

При print(f.readline()) вы получите первую строку с файла "Я новый контент для файла", при повторном использовании print(f.readline()) получите вторую строку и так далее.

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

Забежим вперед, если что не ясно — не волнуйтесь. Дальше мы разучим все инструкции, которые есть. Допустим, мы не знаем сколько строк в файле и выводить 100500 раз print(f.readline()) неразумно. Мы сделаем вывод через цикл.

В коде выше итератор for читает наш файл по строкам и записывает строку в переменную line. И ниже мы нашим принтом делаем вывод строки. Обход идет до последней строки в файле. end='' это форматирование вывода, без него вывод данных будет через строку.

Запись типизированных данных

Записать в файл можно не только простой текст, в него можно записать абсолютно любой тип данных. Пример:

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