byteofpython | Unsorted

Telegram-канал byteofpython - 🐍 Укус питона 🐍

2619

🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки. 👽 Админ - @it_dashka 🔊 Купить рекламу: https://telega.in/c/byteofpython 👉 Чат: @abyteofpython 👉 Поделиться с друзьями: @byteofpython

Subscribe to a channel

🐍 Укус питона 🐍

Удаление данных

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

Также для удаления может применяться оператор del, второй пример:

Для удаления всех элементов можно использовать метод clear(), последний пример:

🐍 Укус питона // 💬 Чат // #теория #модули #shelve

Читать полностью…

🐍 Укус питона 🐍

Чтение данных. Продолжение.

Метод keys() возвращает все ключи из файла, а метод values() - все значения:

Еще один метод items() возвращает набор кортежей. Каждый кортеж содержит ключ и значение.

Консольный вывод:

🐍 Укус питона // 💬 Чат // #теория #модули #shelve

Читать полностью…

🐍 Укус питона 🐍

Модуль shelve. Продолжение.

Запись данных предполагает установку значения для определенного ключа:

А чтение из файла эквивалентно получению значения по ключу:

🐍 Укус питона // 💬 Чат // #теория #модули #shelve

Читать полностью…

🐍 Укус питона 🐍

🔵 Практический интенсив «Python-разработчик: основы за 2 дня» — 23-24 апреля в 19:00 мск.

О перспективах направления Python и многом другом расскажет Грегори Салиба, старший разработчик ЭквантаЛаб с опытом в разработке более 3 лет. 

На вебинаре вы:

☑️ Самостоятельно напишете Telegram-бота с карточными мини-играми.
☑️ Познакомитесь с синтаксисом языка и сферами его применения.
☑️ Узнаете, чего ждут работодатели от junior-разработчиков и что делать, чтобы найти работу без опыта.

Переходите по ссылке, чтобы зарегистрироваться на бесплатный практический интенсив и забрать подарки 🎁

Читать полностью…

🐍 Укус питона 🐍

Модуль pickle. Продолжение.

С помощью функции dump последовательно записываются два объекта. Поэтому при чтении файла также последовательно посредством функции load мы можем считать эти объекты. Консольный вывод программы:

В зависимости от того, какой объект мы записывали функцией dump, тот же объект будет возвращен функцией load при считывании файла.

🐍 Укус питона // 💬 Чат // #теория #файлы #бинарные

Читать полностью…

🐍 Укус питона 🐍

Бинарные файлы.

Бинарные файлы в отличие от текстовых хранят информацию в виде набора байт. При открытии бинарного файла на чтение или запись также надо учитывать, что нам нужно применять режим "b" в дополнение к режиму записи ("w") или чтения ("r").

При чтении мы получаем файл в виде набора байт, и наоборот, при записи в метод write() передается набор байт. Например, скопируем файл:

Считывает файл, путь к которому хранится в переменной FILENAME. В данном случае это файл изображения "forest.png". Считанные байты помещаются в список image_data. Затем этот список записываем в файл с именем NEWFILENAME. Таким образом, мы скопируем содержимое одного файла в другой.

🐍 Укус питона // 💬 Чат // #теория #файлы #бинарные

Читать полностью…

🐍 Укус питона 🐍

Файлы CSV. Продолжение.

Для чтения из файла нам наоборот нужно создать объект reader:

При получении объекта reader мы можем в цикле перебрать все его строки, смотрим вторую часть примера:

🐍 Укус питона // 💬 Чат // #теория #файлы #CSV

Читать полностью…

🐍 Укус питона 🐍

Файлы CSV

Одним из распространенных файловых форматов, которые хранят в удобном виде информацию, является формат csv. Каждая строка в файле csv представляет отдельную запись или строку, которая состоит из отдельных столбцов, разделенных запятыми. Собственно поэтому формат и называется Comma Separated Values. Но хотя формат csv - это формат текстовых файлов, Python для упрощения работы с ним предоставляет специальный встроенный модуль csv.

Рассмотрим работу модуля на примере:

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

🐍 Укус питона // 💬 Чат // #теория #файлы #CSV

Читать полностью…

🐍 Укус питона 🐍

Перемещение по файлу

Для перемещения по файлу после его открытия применяется метод seek(). В него передается индекс байта, к которому надо переместить указатель в файле. Например, в примере выше после записи указатель в файле автоматически устанавливается на конец файла. И считывания данных идет с позиции, на которой стоит указатель. И чтобы его сдвинуть в самое начало, применяется вызов:

Аналогичным образом мы можем перемещаться по файлу на нужную позицию. Например, считаем данные, начиная с 5-го символа:

🐍 Укус питона // 💬 Чат // #теория #файлы #текст

Читать полностью…

🐍 Укус питона 🐍

Чтение файла. Продолжение.

Если файл небольшой, то его можно разом считать с помощью метода read():

И также применим метод readlines() для считывания всего файла в список строк:

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

🐍 Укус питона // 💬 Чат // #теория #файлы #текст

Читать полностью…

🐍 Укус питона 🐍

Чтение файла. Продолжение.

Несмотря на то, что мы явно не применяем метод readline() для чтения каждой строки, но в при переборе файла этот метод автоматически вызывается для получения каждой новой строки. Поэтому в цикле вручную нет смысла вызывать метод readline. Консольный вывод:

Однако поскольку функция print неявно добавляет к каждой строке перевод строки "\n", а строки в записанном файлетакже разделяются символом перевода строки "\n", то получается, что каждая строка оканчивается двойным "\n". и чтобы исключить излишнего переноса на другую строку в функцию print можно передать значение end="".

🐍 Укус питона // 💬 Чат // #теория #файлы #текст

Читать полностью…

🐍 Укус питона 🐍

Запись в текстовый файл. Продолжение.

Для записи списка строк имеется метод writelines(). В качестве параметра он принимает список строк:

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

Еще один способ записи в файл представляет стандартный метод print(), который применяется для вывода данных на консоль:

Для вывода данных в файл в метод print в качестве второго параметра передается название файла через параметр file. А первый параметр представляет записываемую в файл строку.

🐍 Укус питона // 💬 Чат // #теория #файлы #текст

Читать полностью…

🐍 Укус питона 🐍

Текстовые файлы. Запись в текстовый файл.

Чтобы открыть текстовый файл на запись, необходимо применить режим w (перезапись), a(дозапись) или r+/w+ (чтение и запись) . Затем для записи применяется метод write(str), в который передается записываемая строка. Стоит отметить, что записывается именно строка, поэтому, если нужно записать числа, данные других типов, то их предварительно нужно конвертировать в строку.

Запишем некоторую информацию в файл "hello.txt":

Если мы откроем папку, в которой находится текущий скрипт Python, то увидем там файл "hello.txt". Этот файл можно открыть в любом текстовом редакторе и при желании изменить.

🐍 Укус питона // 💬 Чат // #теория #файлы #текст

Читать полностью…

🐍 Укус питона 🐍

Открытие и закрытие файла. Продолжение.

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

В этом случае мы можем обрабатывать исключения:

В данном случае вся работа с файлом идет во вложенном блоке try. И если вдруг возникнет какое-либо исключение, то в любом случае в блоке finally файл будет закрыт.

🐍 Укус питона // 💬 Чат // #теория #файлы

Читать полностью…

🐍 Укус питона 🐍

〰️ CEO Nvidia: В скором времени it-специалисты будут не нужны.

〰️ Cognition Labs анонсировали "программиста из коробки".

〰️ OpenAI уже разносят рынок робототехники.

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

Ребята из XOR убивают все предрасудки, делятся новостями из IT и рассказывают, как дальше жить айтишникам.

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

Подпишись, чтобы не потерять: @xor_journal

Читать полностью…

🐍 Укус питона 🐍

Обновление данных.

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

🐍 Укус питона // 💬 Чат // #теория #модули #shelve

Читать полностью…

🐍 Укус питона 🐍

Чтение данных.

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

Также мы можем использовать метод get(). Первый параметр метода - ключ, по которому следует получить значение, а второй - значение по умолчанию, которое возвращается, если ключ не найден.

Используя цикл for, можно перебрать все значения из файла:

🐍 Укус питона // 💬 Чат // #теория #модули #shelve

Читать полностью…

🐍 Укус питона 🐍

Модуль shelve. Продолжение.

Для закрытия подключения к файлу вызывается метод close():

Либо можно открывать файл с помощью оператора with. Сохраним и считаем в файл несколько объектов:

🐍 Укус питона // 💬 Чат // #теория #модули #shelve

Читать полностью…

🐍 Укус питона 🐍

Модуль shelve.

Для работы с бинарными файлами в Python может применяться еще один модуль - shelve. Он сохраняет объекты в файл с определенным ключом. Затем по этому ключу может извлечь ранее сохраненный объект из файла. Процесс работы с данными через модуль shelve напоминает работу со словарями, которые также используют ключи для сохранения и извлечения объектов.

Для открытия файла модуль shelve использует функцию open():

Где параметр flag может принимать значения, смотрим в пример:

🐍 Укус питона // 💬 Чат // #теория #файлы #бинарные

Читать полностью…

🐍 Укус питона 🐍

Модуль pickle.

Также для работы с бинарными файлами Python предоставляет специальный встроенный модуль pickle, который упрощает работу с бинарными файлами. Этот модуль предоставляет два метода:
• dump(obj, file): записывает объект obj в бинарный файл file
• load(file): считывает данные из бинарного файла в объект
Допустим, надо надо сохранить значения двух переменных:

🐍 Укус питона // 💬 Чат // #теория #файлы #бинарные

Читать полностью…

🐍 Укус питона 🐍

Работа со словарями.

В примере выше каждая запись или строка представляла собой отдельный список, например, ["Sam", 31]. Но кроме того, модуль csv имеет специальные дополнительные возможности для работы со словарями. В частности, функция csv.DictWriter() возвращает объект writer, который позволяет записывать в файл. А функция csv.DictReader() возвращает объект reader для чтения из файла. Например:

Запись строк также производится с помощью методов writerow() и writerows(). Но теперь каждая строка представляет собой отдельный словарь, и кроме того, производится запись и заголовков столбцов с помощью метода writeheader(), а в метод csv.DictWriter в качестве второго параметра передается набор столбцов.

При чтении строк, используя названия столбцов, мы можем обратиться к отдельным значениям внутри строки: row["name"].

🐍 Укус питона // 💬 Чат // #теория #файлы #CSV

Читать полностью…

🐍 Укус питона 🐍

Файлы CSV. Продолжение.

При открытии файла на запись в качестве третьего параметра указывается значение newline="" - пустая строка позволяет корректно считывать строки из файла вне зависимости от операционной системы.

Для записи нам надо получить объект writer, который возвращается функцией csv.writer(file). В эту функцию передается открытый файл. А собственно запись производится с помощью метода writer.writerows(users) Этот метод принимает набор строк. В нашем случае это двухмерный список.

Если необходимо добавить одну запись, которая представляет собой одномерный список, например, ["Sam", 31], то в этом случае можно вызвать метод writer.writerow(user)

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

🐍 Укус питона // 💬 Чат // #теория #файлы #CSV

Читать полностью…

🐍 Укус питона 🐍

Пример работы с файлами

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

🐍 Укус питона // 💬 Чат // #теория #файлы #текст

Читать полностью…

🐍 Укус питона 🐍

Чтение и запись.

Для открытия файла сразу для чтения и записи применяются флаги:

• r+: если файл не найден, то генерируется исключение FileNotFoundError
• w+: если файл не существует, то он автоматически создается. Если файл существует, то он перезаписывается

Например, запишем и считаем из файла данные:

🐍 Укус питона // 💬 Чат // #теория #файлы #текст

Читать полностью…

🐍 Укус питона 🐍

Чтение файла. Продолжение.

Теперь явным образом вызовем метод readline() для чтения отдельных строк:

Консольный вывод, вторая часть примера:

Метод readline можно использовать для построчного считывания файла в цикле while, конец примера:

🐍 Укус питона // 💬 Чат // #теория #файлы #текст

Читать полностью…

🐍 Укус питона 🐍

Чтение файла.

Для чтения файла он открывается с режимом r (Read), и затем мы можем считать его содержимое различными методами:

• readline(): считывает одну строку из файла
• read(): считывает все содержимое файла в одну строку
• readlines(): считывает все строки файла в список

Например, считаем выше записанный файл построчно:

🐍 Укус питона // 💬 Чат // #теория #файлы #текст

Читать полностью…

🐍 Укус питона 🐍

Запись в текстовый файл. Продолжение.

Теперь дозапишем в этот файл еще одну строку:

Дозапись выглядит как добавление строки к последнему символу в файле, поэтому, если необходимо сделать запись с новой строки, то можно использовать эскейп-последовательность "\n". В итоге файл hello.txt будет иметь следующее содержимое:

🐍 Укус питона // 💬 Чат // #теория #файлы #текст

Читать полностью…

🐍 Укус питона 🐍

Открытие и закрытие файла. Продолжение.

Однако есть и более удобная конструкция - конструкция with:

Эта конструкция определяет для открытого файла переменную myfile и выполняет набор инструкций. После их выполнения файл автоматически закрывается. Даже если при выполнении инструкций в блоке with возникнут какие-либо исключения, то файл все равно закрывается.

Так, перепишем предыдущий пример:

🐍 Укус питона // 💬 Чат // #теория #файлы

Читать полностью…

🐍 Укус питона 🐍

📌 Уже 27 марта в 19:00 (мск) стартует наш бесплатный двухдневный онлайн-интенсив.

Во время эфира вы научитесь писать код, запускать и поддерживать простого Telegram-бота. Познакомитесь с синтаксисом языка и увидите, как декомпозировать задачи по разработке.

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

🎁 Всем, кто зарегистрировался — Гайд «Как заговорить на сленге IT-специалистов», а каждому участнику — Карта компетенций Python-разработчика.

Читать полностью…

🐍 Укус питона 🐍

Модуль difflib, сравнение текста.

Модуль difflib содержит классы и функции для сравнения последовательностей. Модуль может быть использован, для сравнения текста и включает в себя классы и функции, которые создают отчеты в нескольких распространенных форматах, включая HTML. Для сравнения каталогов и файлов смотрите модуль filecmp.

В примерах будем использовать следующие два текста, смотрим пример:

🐍 Укус питона // 💬 Чат // #теория #модули #difflib

Читать полностью…
Subscribe to a channel