Введение в использование модуля shutil для управления файлами и директориями
Программисты — те ещё путешественники по файловой системе: то надо переместить файлы, то скопировать, а иногда и удалить. «А как мне это сделать через Python?» — спросите вы. Вот тогда на сцену выходит модуль
### Что такое
---
### Копирование файлов
Иногда нужно быстро скопировать файл, сохранив его содержимое и метаданные. Для этого в
Эта команда создаёт точную копию файла
Функция
---
### Перемещение файлов и папок
Копировать — это хорошо, но что делать, если файл или директория просто должны поменять своё место? Легко! Используем функцию
---
### Удаление директорий
Когда файлов становится слишком много, и их удаление вручную превращается в кошмар,
Но осторожно!
---
### Сжатие директорий
Хотите собрать папку и её содержимое в архив? Пожалуйста! С помощью функции
Эта функция создаёт ZIP-архив
---
### Определение свободного места на диске
Представьте, что перед копированием большого файла вам нужно проверить, достаточно ли свободного места.
Эта функция вернёт общий объём диска, использованное место и остаток, причём в байтах. Удобно, не правда ли?
---
### Итоги
Модуль
Программисты — те ещё путешественники по файловой системе: то надо переместить файлы, то скопировать, а иногда и удалить. «А как мне это сделать через Python?» — спросите вы. Вот тогда на сцену выходит модуль
shutil
. Это ваш швейцарский нож для работы с файлами и директориями. Прост, удобен и невероятно мощный. Сегодня мы погрузимся в работу с этим модулем и разберём его на примерах. ### Что такое
shutil
?shutil
— это модуль стандартной библиотеки Python, который упрощает управление файлами и папками. Всё, начиная от копирования файлов и заканчивая рекурсивным удалением директорий, становится в разы проще благодаря shutil
. Давайте разберём его возможности на практике.---
### Копирование файлов
Иногда нужно быстро скопировать файл, сохранив его содержимое и метаданные. Для этого в
shutil
есть функция copy2
. Посмотрим на пример:import shutil
# Допустим, есть файл source.txt, и мы хотим его скопировать
source = 'source.txt'
destination = 'backup/source_copy.txt'
shutil.copy2(source, destination)
print(f'Файл скопирован из {source} в {destination}')
Эта команда создаёт точную копию файла
source.txt
в папке backup
. Если папки backup
нет, вы получите ошибку, так что убедитесь, что она существует.Функция
copy2
копирует не только сам файл, но и его метаданные, такие как дата создания или права доступа.---
### Перемещение файлов и папок
Копировать — это хорошо, но что делать, если файл или директория просто должны поменять своё место? Легко! Используем функцию
move
.import shutil
# Перемещаем файл
source = 'data/file.txt'
destination = 'archive/file.txt'
shutil.move(source, destination)
print(f'Файл перемещён из {source} в {destination}')
move
отлично справляется, как с файлами, так и с папками. Если в папке archive
уже есть файл с таким же именем, он будет перезаписан.---
### Удаление директорий
Когда файлов становится слишком много, и их удаление вручную превращается в кошмар,
shutil.rmtree
можно считать настоящим спасением. Он рекурсивно удаляет файлы и папки.import shutil
# Удаляем папку вместе со всем её содержимым
target_dir = 'old_backup'
shutil.rmtree(target_dir)
print(f'Папка {target_dir} удалена.')
Но осторожно!
rmtree
не спрашивает, уверены ли вы в своих действиях! Этот метод удаляет всё безвозвратно.---
### Сжатие директорий
Хотите собрать папку и её содержимое в архив? Пожалуйста! С помощью функции
make_archive
это делается на раз-два:import shutil
# Архивируем папку
folder_to_archive = 'project'
archive_name = 'project_backup'
shutil.make_archive(archive_name, 'zip', folder_to_archive)
print(f'Папка {folder_to_archive} успешно заархивирована в {archive_name}.zip')
Эта функция создаёт ZIP-архив
project_backup.zip
со всем содержимым указанной папки. Если вы обрабатываете проекты, в которых множество файлов и папок, это суперполезный инструмент.---
### Определение свободного места на диске
Представьте, что перед копированием большого файла вам нужно проверить, достаточно ли свободного места.
shutil
поможет и с этим:import shutil
# Проверяем свободное место на диске
total, used, free = shutil.disk_usage('/')
print(f'Всего: {total // (1024**3)} ГБ')
print(f'Использовано: {used // (1024**3)} ГБ')
print(f'Свободно: {free // (1024**3)} ГБ')
Эта функция вернёт общий объём диска, использованное место и остаток, причём в байтах. Удобно, не правда ли?
---
### Итоги
Модуль
shutil
— это практически универсальный помощник для работы с файлами и папками. С его помощью можно копировать, перемещать, удалять, архивировать и даже проверять состояние дисков. Концепции просты, а функции — интуитивно понятны, что делает этот модуль отличным инструментом как для начинающих, так и для профессиональных разработчиков.Теперь, когда вы знаете о
shutil
, следующий раз, сталкиваясь с задачей управления файлами и директориями, вы точно будете знать, за какой инструмент взяться. Попробуйте поэкспериментировать с примерами выше — это лучший способ освоить этот мощный модуль!### Работа с многоязычными текстами в Python: модуль
Если вы разрабатываете приложение или веб-сайт, которым могут пользоваться люди в разных странах, то рано или поздно вы столкнетесь с задачей его локализации — то есть перевода интерфейса и сообщений на множество языков. Тут на сцену выходит Python с его инструментами для работы с многоязычными текстами, и один из них — модуль
---
### Основные принципы работы
В основе модуля
1.
2.
3.
Сам процесс работы можно разбить на три этапа:
1. Вы помечаете строки в коде, которые должны быть переведены.
2. Генерируете
3. Переводчики создают
---
### Пример использования модуля
Рассказывать теорию полезно, но эффективнее будет показать, как это работает на практике. Начнем с базового примера.
#### Шаг 1. Подготовка строк для перевода
Предположим, что у нас есть небольшой скрипт. Вместо простого текста мы будем использовать функцию
Здесь:
- Мы подключили модуль
- Функция
---
#### Шаг 2. Генерация
Чтобы создать шаблон перевода из нашего скрипта, используется утилита
---
#### Шаг 3. Перевод строки
Теперь откроем файл
Этот файл позже компилируется в
---
#### Шаг 4. Проверка перевода
Если все сделано правильно, французские строки будут загружены при запуске скрипта. Вывод, соответственно, будет таким:
Теперь ваше приложение "говорит" на французском!
---
### Особенности и полезные советы
- Fallback на оригинал. Если перевод для текущего языка не найден,
- Работа с контекстом. Вы можете добавлять пояснения к строкам для переводчиков, чтобы избежать двусмысленных интерпретаций.
- Компактность и ясность. Использование
---
### Заключение
Локализация — это не трудный процесс, если подойти к нему правильно. Модуль
gettext
Если вы разрабатываете приложение или веб-сайт, которым могут пользоваться люди в разных странах, то рано или поздно вы столкнетесь с задачей его локализации — то есть перевода интерфейса и сообщений на множество языков. Тут на сцену выходит Python с его инструментами для работы с многоязычными текстами, и один из них — модуль
gettext
.gettext
— это стандартный модуль Python, предназначенный для обеспечения многоязычной поддержки в приложениях. Он помогает разработчикам сделать их проекты проще в переводе и управлении языковыми файлами. А самое главное, с ним можно начать работать даже если вы впервые слышите слово "локализация". Давайте разбираться, как это работает.---
### Основные принципы работы
gettext
В основе модуля
gettext
лежит концепция использования каталога сообщений — message catalog
. Каталог состоит из файла с переводами, в который записываются строки оригинального текста и их переводы на целевой язык. Формат файлов следующий:1.
.pot
(Portable Object Template) — шаблон перевода. В нем находятся текстовые строки без перевода.2.
.po
(Portable Object) — файл, где к текстовым строкам добавляются переводы.3.
.mo
(Machine Object) — скомпилированная версия .po
для использования в приложении.Сам процесс работы можно разбить на три этапа:
1. Вы помечаете строки в коде, которые должны быть переведены.
2. Генерируете
.pot
файл.3. Переводчики создают
.po
файлы и компилируют их в .mo
.---
### Пример использования модуля
gettext
Рассказывать теорию полезно, но эффективнее будет показать, как это работает на практике. Начнем с базового примера.
#### Шаг 1. Подготовка строк для перевода
Предположим, что у нас есть небольшой скрипт. Вместо простого текста мы будем использовать функцию
_()
, чтобы пометить строки для перевода. import gettext
# Настройка языка
lang = gettext.translation('example', localedir='locales', languages=['fr'], fallback=True)
lang.install()
# Переменные для перевода
print(_("Hello, user!"))
print(_("Welcome to our application."))
Здесь:
- Мы подключили модуль
gettext
и настроили его для работы с французским языком (languages=['fr']
).- Функция
_()
автоматически заменит переданные строки их переведенными версиями.---
#### Шаг 2. Генерация
.pot
файлаЧтобы создать шаблон перевода из нашего скрипта, используется утилита
xgettext
, которая анализирует текстовые строки в коде и добавляет их в .pot
файл:xgettext -o locales/example.pot script.py
---
#### Шаг 3. Перевод строки
Теперь откроем файл
locales/example.pot
, добавим переводы и сохраним его как .po
. Например:# French translation
msgid "Hello, user!"
msgstr "Bonjour, utilisateur!"
msgid "Welcome to our application."
msgstr "Bienvenue dans notre application."
Этот файл позже компилируется в
.mo
:msgfmt -o locales/fr/LC_MESSAGES/example.mo locales/example.po
---
#### Шаг 4. Проверка перевода
Если все сделано правильно, французские строки будут загружены при запуске скрипта. Вывод, соответственно, будет таким:
Bonjour, utilisateur!
Bienvenue dans notre application.
Теперь ваше приложение "говорит" на французском!
---
### Особенности и полезные советы
- Fallback на оригинал. Если перевод для текущего языка не найден,
gettext
вернет строку на языке оригинала. Это удобно, если не все строки переведены.- Работа с контекстом. Вы можете добавлять пояснения к строкам для переводчиков, чтобы избежать двусмысленных интерпретаций.
- Компактность и ясность. Использование
_()
вместо сложных вызовов функций делает код приятным для чтения и упрощает поддержку.---
### Заключение
Локализация — это не трудный процесс, если подойти к нему правильно. Модуль
gettext
— это мощный инструмент, который поможет вашему проекту стать доступным миллионам пользователей по всему миру.🔥1
Поддержка файлов
Попробуйте использовать
.po
и .mo
делает возможным отделение перевода от кода, что особенно важно, если у вас есть профессиональные переводчики или нужно поддерживать несколько языков.Попробуйте использовать
gettext
в своих проектах, и вы сами удивитесь, как он упрощает разработку многоязычных приложений.### Как создавать простые и сложные взаимодействия с API с помощью HTTPie
Если вы хоть раз сталкивались с работой с API, то уже наверняка знаете, насколько важным инструментом становятся HTTP-запросы. Чтобы изучить API, проверить его работу или отладить приложения, вам нужен удобный и мощный инструмент для выполнения таких запросов. Один из таких инструментов — это HTTPie. Забудьте о сложностях curl или громоздкой Postman, HTTPie предлагает простой, понятный и быстрый способ отправки запросов к API. А ещё он легок в освоении для новичков!
HTTPie — это командный инструмент, который делает взаимодействие с API максимально доступным, благодаря интуитивно понятному синтаксису. Сегодня я расскажу, как с его помощью легко отправлять запросы, передавать параметры, работать с аутентификацией и даже разбираться с комплексными запросами.
---
### Установка HTTPie
Первым делом установим HTTPie. Сделать это можно через Python Package Index (PyPI). Достаточно выполнить одну команду в терминале:
Готово! Вы вооружены инструментом, с которым работа с API превратится в удовольствие.
---
### Основы взаимодействия
### Простой GET-запрос
Чаще всего при работе с API нам нужно получить данные. Для этого используется метод
Консоль моментально выведет читаемый JSON-ответ. Это одна из сильных сторон HTTPie: читаемость запросов и ответов. В JSON-объекте легко увидеть структуру данных.
---
### GET-запрос с параметрами
Допустим, API требует, чтобы вы передали город и страну в запросе. В HTTPie параметры указываются через ключ-значение, разделённые "=", прямо в строке. Например:
Обратите внимание на использование
---
### POST-запрос: Отправка данных
При разработке, кроме получения данных, нужно часто отправлять их. Метод
HTTPie автоматически сформирует тело запроса и передаст данные в нужном формате.
---
### Аутентификация
Многие API требуют аутентификацию. HTTPie поддерживает различные способы, например Basic Auth. Передать логин и пароль можно с помощью ключа
Если вы используете Bearer Token, то добавьте его через заголовок:
---
### Работа с сложными API
Иногда API требуют от нас не только базовых команд, но и работы с вложенными структурами данных или загрузки файлов. Рассмотрим отправку JSON-объекта с вложенными данными:
Обратите внимание на
Ещё вам может понадобиться загрузить файл. Например, нужно отправить картинку на сервер:
---
### Заключение
HTTPie — это отличный инструмент для взаимодействия с API: он прост, мощен и при этом дружелюбен к разработчику. Если раньше вам приходилось тратить время на сложные команды curl или графический интерфейс Postman, то с HTTPie вы сможете решать задачи прямо из терминала быстро и эффективно. Попробуйте его в работе, и ваш опыт взаимодействия с API изменится в лучшую сторону!
Если вы хоть раз сталкивались с работой с API, то уже наверняка знаете, насколько важным инструментом становятся HTTP-запросы. Чтобы изучить API, проверить его работу или отладить приложения, вам нужен удобный и мощный инструмент для выполнения таких запросов. Один из таких инструментов — это HTTPie. Забудьте о сложностях curl или громоздкой Postman, HTTPie предлагает простой, понятный и быстрый способ отправки запросов к API. А ещё он легок в освоении для новичков!
HTTPie — это командный инструмент, который делает взаимодействие с API максимально доступным, благодаря интуитивно понятному синтаксису. Сегодня я расскажу, как с его помощью легко отправлять запросы, передавать параметры, работать с аутентификацией и даже разбираться с комплексными запросами.
---
### Установка HTTPie
Первым делом установим HTTPie. Сделать это можно через Python Package Index (PyPI). Достаточно выполнить одну команду в терминале:
pip install httpie
Готово! Вы вооружены инструментом, с которым работа с API превратится в удовольствие.
---
### Основы взаимодействия
### Простой GET-запрос
Чаще всего при работе с API нам нужно получить данные. Для этого используется метод
GET
. Например, вы хотите узнать текущую информацию о погоде с какого-нибудь сервиса. Пример запроса:http https://api.example.com/weather
Консоль моментально выведет читаемый JSON-ответ. Это одна из сильных сторон HTTPie: читаемость запросов и ответов. В JSON-объекте легко увидеть структуру данных.
---
### GET-запрос с параметрами
Допустим, API требует, чтобы вы передали город и страну в запросе. В HTTPie параметры указываются через ключ-значение, разделённые "=", прямо в строке. Например:
http https://api.example.com/weather city==London country==UK
Обратите внимание на использование
==
, а не =
. Это фишка HTTPie, позволяющая отличать параметры от других частей команды.---
### POST-запрос: Отправка данных
При разработке, кроме получения данных, нужно часто отправлять их. Метод
POST
используется, чтобы, к примеру, регистрировать пользователей или передавать файлы. Вот как выглядит запрос для добавления нового пользователя:http POST https://api.example.com/users name=JohnDoe email=johndoe@example.com
HTTPie автоматически сформирует тело запроса и передаст данные в нужном формате.
---
### Аутентификация
Многие API требуют аутентификацию. HTTPie поддерживает различные способы, например Basic Auth. Передать логин и пароль можно с помощью ключа
-a
:http -a johndoe:password123 https://api.example.com/private
Если вы используете Bearer Token, то добавьте его через заголовок:
http https://api.example.com/private 'Authorization: Bearer your_token_here'
---
### Работа с сложными API
Иногда API требуют от нас не только базовых команд, но и работы с вложенными структурами данных или загрузки файлов. Рассмотрим отправку JSON-объекта с вложенными данными:
http POST https://api.example.com/orders order_id=123 products:='[{"id": 1, "name": "Book"}, {"id": 2, "name": "Pen"}]'
Обратите внимание на
:=
. Это специальный оператор, который указывает HTTPie, что перед нами сложный JSON-объект. HTTPie умно преобразует строку в объект и отправит всё корректно.Ещё вам может понадобиться загрузить файл. Например, нужно отправить картинку на сервер:
http POST https://api.example.com/upload file@./image.jpg
file@
указывает, что вы прикладываете файл. Всё легко и понятно!---
### Заключение
HTTPie — это отличный инструмент для взаимодействия с API: он прост, мощен и при этом дружелюбен к разработчику. Если раньше вам приходилось тратить время на сложные команды curl или графический интерфейс Postman, то с HTTPie вы сможете решать задачи прямо из терминала быстро и эффективно. Попробуйте его в работе, и ваш опыт взаимодействия с API изменится в лучшую сторону!
HTTPie – API testing client that flows with you
Making APIs simple and intuitive for those building the tools of our time.
👍2
Реализация протокола MQTT на Python: основные шаги
Сегодня поговорим про MQTT — легковесный протокол для передачи сообщений «из точки в точку». MQTT отлично подходит для IoT (Интернета вещей), систем мониторинга и других задач с высокой требовательностью к надежной передаче данных при минимальной нагрузке. В Python с этим протоколом работать проще простого благодаря мощному модулю paho-mqtt. Давайте разберем его на практике!
---
### Что такое MQTT?
MQTT (Message Queuing Telemetry Transport) — это протокол «издатель-обозреватель» (publish-subscribe), основывающийся на модели клиента и брокера. Клиенты могут либо публиковать сообщения в определенные топики (темы), либо подписываться на них. Например, датчик температуры публикует данные в топик
---
### Настройка среды
Прежде всего, нам нужно установить необходимую библиотеку. Открываем терминал и вводим:
Также понадобится MQTT-брокер. Один из самых популярных — Eclipse Mosquitto. Вы можете развернуть его локально или использовать облачный вариант, например, CloudMQTT.
---
### Пишем клиента для публикации сообщений
Начнем с простого — отправим данные в топик. Для этого создадим Python-скрипт, который будет публиковать сообщения.
В этом коде:
- Мы подключаемся к публичному брокеру
- Публикуем сообщения с температурой в топик
- Каждый клиент MQTT идентифицируется уникальным именем, в данном случае —
---
### Создаем клиента для подписки
Теперь напишем скрипт, который будет получать сообщения из того же топика. Именно так устройства в IoT-экосистемах общаются между собой.
Здесь обработчик
---
### Ключевые моменты
1. Гибкость топиков: В топиках можно использовать иерархию, например,
2. QoS-уровни: MQTT поддерживает три уровня качества доставки (0, 1, 2). Выбор зависит от ваших требований: скорость VS надежность.
3. Автономная работа: Если клиент теряет связь с брокером, сообщения можно сохранять. Для этого используется параметр
---
### Итог
MQTT — это мощный инструмент для простого, надежного и легковесного обмена данными.
Сегодня поговорим про MQTT — легковесный протокол для передачи сообщений «из точки в точку». MQTT отлично подходит для IoT (Интернета вещей), систем мониторинга и других задач с высокой требовательностью к надежной передаче данных при минимальной нагрузке. В Python с этим протоколом работать проще простого благодаря мощному модулю paho-mqtt. Давайте разберем его на практике!
---
### Что такое MQTT?
MQTT (Message Queuing Telemetry Transport) — это протокол «издатель-обозреватель» (publish-subscribe), основывающийся на модели клиента и брокера. Клиенты могут либо публиковать сообщения в определенные топики (темы), либо подписываться на них. Например, датчик температуры публикует данные в топик
sensors/temperature
, а ваше приложение их читает.---
### Настройка среды
Прежде всего, нам нужно установить необходимую библиотеку. Открываем терминал и вводим:
pip install paho-mqtt
Также понадобится MQTT-брокер. Один из самых популярных — Eclipse Mosquitto. Вы можете развернуть его локально или использовать облачный вариант, например, CloudMQTT.
---
### Пишем клиента для публикации сообщений
Начнем с простого — отправим данные в топик. Для этого создадим Python-скрипт, который будет публиковать сообщения.
import paho.mqtt.client as mqtt
import time
broker_address = "test.mosquitto.org" # Используем публичный тестовый брокер
topic = "home/livingroom/temperature"
def publish_messages():
client = mqtt.Client("Publisher") # Создаем MQTT-клиента
client.connect(broker_address) # Подключаемся к брокеру
for i in range(5):
message = f"Temperature reading: {20 + i}°C"
client.publish(topic, message) # Публикуем сообщение в указанный топик
print(f"Published: {message}")
time.sleep(2) # Небольшая пауза между отправками
if __name__ == "__main__":
publish_messages()
В этом коде:
- Мы подключаемся к публичному брокеру
test.mosquitto.org
.- Публикуем сообщения с температурой в топик
home/livingroom/temperature
.- Каждый клиент MQTT идентифицируется уникальным именем, в данном случае —
Publisher
.---
### Создаем клиента для подписки
Теперь напишем скрипт, который будет получать сообщения из того же топика. Именно так устройства в IoT-экосистемах общаются между собой.
import paho.mqtt.client as mqtt
broker_address = "test.mosquitto.org"
topic = "home/livingroom/temperature"
def on_message(client, userdata, message):
print(f"Received message: {message.payload.decode('utf-8')} from topic: {message.topic}")
def start_subscriber():
client = mqtt.Client("Subscriber") # Создаем MQTT-клиента
client.on_message = on_message # Указываем обработчик для входящих сообщений
client.connect(broker_address) # Подключаемся к брокеру
client.subscribe(topic) # Подписываемся на нужный топик
print(f"Subscribed to topic: {topic}")
client.loop_forever() # Запускаем бесконечный цикл для обработки сообщений
if __name__ == "__main__":
start_subscriber()
Здесь обработчик
on_message
вызывается всякий раз, когда в топике появляется новое сообщение. Запустив этот скрипт, вы увидите в консоли все входящие данные.---
### Ключевые моменты
1. Гибкость топиков: В топиках можно использовать иерархию, например,
home/kitchen/light
или home/livingroom/temperature
. Символы +
и #
дают «дикарям» (wildcards) возможность подписки на группы топиков.2. QoS-уровни: MQTT поддерживает три уровня качества доставки (0, 1, 2). Выбор зависит от ваших требований: скорость VS надежность.
3. Автономная работа: Если клиент теряет связь с брокером, сообщения можно сохранять. Для этого используется параметр
retain
.---
### Итог
MQTT — это мощный инструмент для простого, надежного и легковесного обмена данными.
PyPI
paho-mqtt
MQTT version 5.0/3.1.1 client class
👍1
С библиотекой
paho-mqtt
на Python вы можете за считаные минуты написать рабочее приложение для IoT. Хотите, чтобы ваш «умный дом» не только слушал команды, но и передавал данные? Теперь вы знаете, с чего начинать! 🚀Как настроить взаимодействие между Python-приложением и Google Cloud Platform?
Если вы хотите, чтобы ваше Python-приложение получило суперспособности типа хранения данных в базе, работы с машинным обучением или управления огромными объемами информации, то облачные решения Google Cloud Platform (GCP) станут отличным выбором. Сегодня я расскажу, как интегрировать Python-приложение с GCP и сделаю это на максимально простых и понятных примерах.
### Зачем нужно подключаться к GCP?
GCP предоставляет множество сервисов: базы данных (BigQuery, Firestore), хранилища файлов (Cloud Storage), серверы для выполнения кода (Cloud Functions) и многое другое. Вместо создания сложной инфраструктуры с нуля, вы можете использовать готовые решения Google и сосредоточиться непосредственно на своей логике.
Теперь давайте настроим наше приложение для работы с GCP. Всё разберем пошагово.
---
### 1. Установим библиотеку Google Cloud для Python
Для начала нужно установить SDK: набор инструментов, который позволит Python "общаться" с GCP. Это делается через
Google предоставляет готовые модули для большинства своих сервисов:
---
### 2. Настроим проект в GCP
1. Создайте проект. Перейдите в Google Cloud Console и создайте новый проект.
2. Включите нужные API. Для работы с определенными сервисами их API нужно активировать. Например, для хранения файлов включите
3. Скачайте ключи для аутентификации. Зайдите в раздел "Service Accounts", создайте пользователя, которому вы доверите доступ к вашим данным, и скачайте JSON-файл с его ключом. Этот файл понадобится Python-приложению для взаимодействия с GCP.
---
### 3. Настроим код для подключения
Считаем, что ваш JSON-файл с ключами называется
Теперь Python-приложение будет авторизовано в GCP!
---
### 4. Пример: Работа с Google Cloud Storage
Google Cloud Storage — это облачное хранилище для файлов. Сохранять, читать или удалять файлы просто:
Вот и всё, ваши данные уже в облаке! Когда кому-то понадобится этот файл, вы можете предоставить ссылку на него:
---
### 5. Пример: Работа с Firestore
Firestore — это облачная база данных, которая идеально подходит для хранения и быстрого поиска данных. Создадим документ и получим его:
---
### Что дальше?
Теперь ваше Python-приложение может использовать всю магию Google Cloud Platform.
Если вы хотите, чтобы ваше Python-приложение получило суперспособности типа хранения данных в базе, работы с машинным обучением или управления огромными объемами информации, то облачные решения Google Cloud Platform (GCP) станут отличным выбором. Сегодня я расскажу, как интегрировать Python-приложение с GCP и сделаю это на максимально простых и понятных примерах.
### Зачем нужно подключаться к GCP?
GCP предоставляет множество сервисов: базы данных (BigQuery, Firestore), хранилища файлов (Cloud Storage), серверы для выполнения кода (Cloud Functions) и многое другое. Вместо создания сложной инфраструктуры с нуля, вы можете использовать готовые решения Google и сосредоточиться непосредственно на своей логике.
Теперь давайте настроим наше приложение для работы с GCP. Всё разберем пошагово.
---
### 1. Установим библиотеку Google Cloud для Python
Для начала нужно установить SDK: набор инструментов, который позволит Python "общаться" с GCP. Это делается через
pip
:pip install google-cloud
pip install google-cloud-storage # Если нужен доступ к Cloud Storage
Google предоставляет готовые модули для большинства своих сервисов:
google-cloud-firestore
для базы данных Firestore, google-cloud-bigquery
для аналитики данных в BigQuery, и так далее.---
### 2. Настроим проект в GCP
1. Создайте проект. Перейдите в Google Cloud Console и создайте новый проект.
2. Включите нужные API. Для работы с определенными сервисами их API нужно активировать. Например, для хранения файлов включите
Cloud Storage API
. Это можно сделать в разделе "API & Services".3. Скачайте ключи для аутентификации. Зайдите в раздел "Service Accounts", создайте пользователя, которому вы доверите доступ к вашим данным, и скачайте JSON-файл с его ключом. Этот файл понадобится Python-приложению для взаимодействия с GCP.
---
### 3. Настроим код для подключения
Считаем, что ваш JSON-файл с ключами называется
service_account_key.json
. Обязательно указывайте путь к этому файлу через переменную окружения GOOGLE_APPLICATION_CREDENTIALS
:export GOOGLE_APPLICATION_CREDENTIALS="path/to/service_account_key.json"
Теперь Python-приложение будет авторизовано в GCP!
---
### 4. Пример: Работа с Google Cloud Storage
Google Cloud Storage — это облачное хранилище для файлов. Сохранять, читать или удалять файлы просто:
from google.cloud import storage
# Создаем клиента
client = storage.Client()
# Получаем ссылку на существующий bucket (хранилище)
bucket = client.bucket('my_bucket_name')
# Загружаем файл
blob = bucket.blob('example.txt')
blob.upload_from_string('Hello, GCP!')
print('File uploaded successfully.')
Вот и всё, ваши данные уже в облаке! Когда кому-то понадобится этот файл, вы можете предоставить ссылку на него:
# Генерация публичной ссылки
url = blob.generate_signed_url(expiration=3600) # Ссылка действительна 1 час
print(f'Download your file here: {url}')
---
### 5. Пример: Работа с Firestore
Firestore — это облачная база данных, которая идеально подходит для хранения и быстрого поиска данных. Создадим документ и получим его:
from google.cloud import firestore
# Создаем клиента
db = firestore.Client()
# Добавляем данные в коллекцию "users"
doc_ref = db.collection('users').document('user123')
doc_ref.set({
'name': 'Alice',
'age': 30,
'location': 'Wonderland'
})
print('User added successfully!')
# Получаем данные
doc = doc_ref.get()
if doc.exists:
print('Document data:', doc.to_dict())
else:
print('No such document!')
---
### Что дальше?
Теперь ваше Python-приложение может использовать всю магию Google Cloud Platform.
👍2
Вы сможете хранить файлы в Cloud Storage, обрабатывать данные с помощью BigQuery, строить API на основе Cloud Functions или даже обучать модели машинного обучения.
Пусть вас не пугает обилие возможностей — начните с малого, поэкспериментируйте с одним из сервисов. GCP предоставляет бесплатный уровень (Free Tier), чтобы вы могли изучить его возможности без финансовых затрат.
Интеграция Python и GCP — это один из самых мощных инструментов в арсенале современного разработчика! Создавайте, масштабируйтесь и сохраняйте рабочие часы благодаря облачным технологиям.
Пусть вас не пугает обилие возможностей — начните с малого, поэкспериментируйте с одним из сервисов. GCP предоставляет бесплатный уровень (Free Tier), чтобы вы могли изучить его возможности без финансовых затрат.
Интеграция Python и GCP — это один из самых мощных инструментов в арсенале современного разработчика! Создавайте, масштабируйтесь и сохраняйте рабочие часы благодаря облачным технологиям.
👍1
Подписываемся на
https://t.me/info_sol
https://t.me/info_sol
Telegram
Логово Сола
Личный блог @solkogan
Основы разработки микроконтроллеров на Python: библиотека MicroPython
Если вы думаете, что язык Python — это только про веб-разработку, анализ данных и скрипты, то вы сильно заблуждаетесь. Этот язык настолько гибкий и универсальный, что его можно использовать даже для программирования микроконтроллеров! Встречайте — MicroPython. В этом посте я расскажу, как начать работу и какие возможности открывает перед вами эта удивительная библиотека.
### Что такое MicroPython?
MicroPython — это облегчённая версия Python, созданная специально для микроконтроллеров. Она идеально подходит для таких платформ, как ESP32, ESP8266, Raspberry Pi Pico и других устройств с ограниченным количеством памяти. Основная идея MicroPython заключается в возможности использовать привычный синтаксис Python для управления физическими устройствами. За счёт этого он становится доступным даже для новичков, не погружая вас в сложную терминологию и низкоуровневое программирование.
### Установка MicroPython
Для начала работы вам понадобится микроконтроллер, поддерживающий MicroPython. Самым популярным выбором является недорогой ESP32. Чтобы загрузить на него прошивку MicroPython, выполните следующие действия:
1. Скачайте актуальную прошивку с официального сайта MicroPython — micropython.org.
2. Установите инструмент
3. Подключите микроконтроллер к компьютеру и выполните команды для прошивки:
После этого ваш микроконтроллер будет готов к программированию на MicroPython.
### Как писать код?
Работать с MicroPython можно через REPL-консоль или загружая скрипты на устройство. Проще всего начать с установки текстового редактора, например, Thonny, который поддерживает подключение к MicroPython из коробки.
### Пример: мигающий светодиод
Начнём с классического «Hello, world!» для микроконтроллеров — мигания светодиодом. Подключите светодиод к пину GPIO вашего микроконтроллера и попробуем запрограммировать его.
Вот базовый пример кода:
Этот код включает и выключает светодиод с задержкой в одну секунду, используя библиотеку
### Пример: работа с датчиком температуры
Давайте попробуем что-то посложнее. Например, будем считывать данные с температурного датчика DHT11 и выводить их в консоль. Для этого понадобится библиотека
Подключите датчик к одному из пинов GPIO (например, GPIO4) и загрузите следующий код:
Этот скрипт считывает данные о температуре и влажности с датчика и выводит их в консоль. Всё просто и удобно!
### Преимущества MicroPython
MicroPython открывает огромные возможности для прототипирования и обучения работе с микроконтроллерами:
1. Простота: Порог входа крайне низкий благодаря синтаксису Python.
2. Кроссплатформенность: Ваши навыки Python применимы как для десктопа, так и для микроконтроллеров.
3. Активное сообщество: Существует множество библиотек и примеров.
### Заключение
MicroPython — это невероятно сильный инструмент, который позволяет использовать Python даже на микроконтроллерах. Работая с ним, вы можете не только автоматизировать повседневные задачи, но и создавать полноценные IoT-устройства.
Если вы думаете, что язык Python — это только про веб-разработку, анализ данных и скрипты, то вы сильно заблуждаетесь. Этот язык настолько гибкий и универсальный, что его можно использовать даже для программирования микроконтроллеров! Встречайте — MicroPython. В этом посте я расскажу, как начать работу и какие возможности открывает перед вами эта удивительная библиотека.
### Что такое MicroPython?
MicroPython — это облегчённая версия Python, созданная специально для микроконтроллеров. Она идеально подходит для таких платформ, как ESP32, ESP8266, Raspberry Pi Pico и других устройств с ограниченным количеством памяти. Основная идея MicroPython заключается в возможности использовать привычный синтаксис Python для управления физическими устройствами. За счёт этого он становится доступным даже для новичков, не погружая вас в сложную терминологию и низкоуровневое программирование.
### Установка MicroPython
Для начала работы вам понадобится микроконтроллер, поддерживающий MicroPython. Самым популярным выбором является недорогой ESP32. Чтобы загрузить на него прошивку MicroPython, выполните следующие действия:
1. Скачайте актуальную прошивку с официального сайта MicroPython — micropython.org.
2. Установите инструмент
esptool
с помощью pip
:pip install esptool
3. Подключите микроконтроллер к компьютеру и выполните команды для прошивки:
esptool.py --chip esp32 erase_flash
esptool.py --chip esp32 write_flash -z 0x1000 micropython.bin
После этого ваш микроконтроллер будет готов к программированию на MicroPython.
### Как писать код?
Работать с MicroPython можно через REPL-консоль или загружая скрипты на устройство. Проще всего начать с установки текстового редактора, например, Thonny, который поддерживает подключение к MicroPython из коробки.
### Пример: мигающий светодиод
Начнём с классического «Hello, world!» для микроконтроллеров — мигания светодиодом. Подключите светодиод к пину GPIO вашего микроконтроллера и попробуем запрограммировать его.
Вот базовый пример кода:
from machine import Pin
from time import sleep
led = Pin(2, Pin.OUT) # Подключение светодиода к GPIO2
while True:
led.value(1) # Включить светодиод
sleep(1)
led.value(0) # Выключить светодиод
sleep(1)
Этот код включает и выключает светодиод с задержкой в одну секунду, используя библиотеку
machine
для управления выводами GPIO.### Пример: работа с датчиком температуры
Давайте попробуем что-то посложнее. Например, будем считывать данные с температурного датчика DHT11 и выводить их в консоль. Для этого понадобится библиотека
dht
, которая встроена в MicroPython.Подключите датчик к одному из пинов GPIO (например, GPIO4) и загрузите следующий код:
from machine import Pin
import dht
sensor = dht.DHT11(Pin(4)) # Подключение DHT11 к GPIO4
try:
sensor.measure()
temp = sensor.temperature()
humidity = sensor.humidity()
print("Temperature:", temp, "°C")
print("Humidity:", humidity, "%")
except OSError as e:
print("Failed to read sensor:", e)
Этот скрипт считывает данные о температуре и влажности с датчика и выводит их в консоль. Всё просто и удобно!
### Преимущества MicroPython
MicroPython открывает огромные возможности для прототипирования и обучения работе с микроконтроллерами:
1. Простота: Порог входа крайне низкий благодаря синтаксису Python.
2. Кроссплатформенность: Ваши навыки Python применимы как для десктопа, так и для микроконтроллеров.
3. Активное сообщество: Существует множество библиотек и примеров.
### Заключение
MicroPython — это невероятно сильный инструмент, который позволяет использовать Python даже на микроконтроллерах. Работая с ним, вы можете не только автоматизировать повседневные задачи, но и создавать полноценные IoT-устройства.
micropython.org
MicroPython - Python for microcontrollers
MicroPython is a lean and efficient
implementation of the Python 3 programming language
that includes a small subset of the Python standard library and is
optimised to run on microcontrollers and in constrained environments.
implementation of the Python 3 programming language
that includes a small subset of the Python standard library and is
optimised to run on microcontrollers and in constrained environments.
👍3
### Изучение методов обработки изображений с использованием библиотеки Scikit-Image
Обработка изображений – это та область, которая сочетает в себе магию математики, искусства и программистского мастерства. Если вы когда-либо хотели научиться добавлять фильтры, выделять контуры объектов или модифицировать изображения на уровне пикселей, позвольте представить библиотеку scikit-image. Это мощный инструмент с простым интерфейсом. Его главная цель – сделать сложные задачи обработки изображений доступными даже для начинающих Python-разработчиков.
Давайте погрузимся в мир scikit-image и разберем несколько полезных методов из этой библиотеки на конкретных примерах.
---
### 1. Загрузка изображений и их просмотр
Первый шаг в обработке изображения – это его открытие. В scikit-image за это отвечает функция
Элементарно! Вы скачали изображение, отобразили его и готовы приступить к обработке. А что если нам нужно сделать его черно-белым?
---
### 2. Преобразование в оттенки серого
Цветные изображения состоят из множества пикселей, каждый из которых имеет RGB-значение. Иногда требуется упростить изображение, оставив только уровни яркости. Для этого в scikit-image есть функция
И вот перед нами черно-белое изображение! Всё происходит за считанные строки.
---
### 3. Выделение краев
Один из ключевых моментов обработки изображений – выделение объектов с помощью их контуров. В scikit-image для этого предусмотрен метод
Алгоритм Кэнни позволяет легко находить границы объектов, например, очертания фасадов зданий.
---
### 4. Изменение размера изображения
Для обработки больших изображений иногда требуется изменить их размер — уменьшить или увеличить, сохранив пропорции. Воспользуемся функцией
Теперь вы можете работать с более компактной версией изображения, экономя память и время выполнения операций.
---
### 5. Применение фильтров
Фильтрация изображений – это не только Instagram-эффекты, но и полезный инструмент для устранения шума. Попробуем применить гауссовское размытие с использованием функции
Функция
---
### Пару слов в завершение
Библиотека scikit-image – это настоящий швейцарский нож для работы с изображениями. В ней есть инструменты для сегментации, изменения формата, выделения объектов, анализа текстур и множества других задач. Главное – терпеливо экспериментировать и искать подходящее решение. У scikit-image удобная документация, а её функционал способен удовлетворить как новичков, так и опытных специалистов.
Эти примеры – всего лишь первая ступенька в лестнице возможностей scikit-image.
Обработка изображений – это та область, которая сочетает в себе магию математики, искусства и программистского мастерства. Если вы когда-либо хотели научиться добавлять фильтры, выделять контуры объектов или модифицировать изображения на уровне пикселей, позвольте представить библиотеку scikit-image. Это мощный инструмент с простым интерфейсом. Его главная цель – сделать сложные задачи обработки изображений доступными даже для начинающих Python-разработчиков.
Давайте погрузимся в мир scikit-image и разберем несколько полезных методов из этой библиотеки на конкретных примерах.
---
### 1. Загрузка изображений и их просмотр
Первый шаг в обработке изображения – это его открытие. В scikit-image за это отвечает функция
io.imread
.from skimage import io
import matplotlib.pyplot as plt
# Загрузка изображения из интернета
image = io.imread('https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png')
# Отображение изображения
plt.imshow(image)
plt.axis('off')
plt.show()
Элементарно! Вы скачали изображение, отобразили его и готовы приступить к обработке. А что если нам нужно сделать его черно-белым?
---
### 2. Преобразование в оттенки серого
Цветные изображения состоят из множества пикселей, каждый из которых имеет RGB-значение. Иногда требуется упростить изображение, оставив только уровни яркости. Для этого в scikit-image есть функция
rgb2gray
.from skimage.color import rgb2gray
# Преобразование в оттенки серого
gray_image = rgb2gray(image)
# Отображение результата
plt.imshow(gray_image, cmap='gray')
plt.axis('off')
plt.show()
И вот перед нами черно-белое изображение! Всё происходит за считанные строки.
---
### 3. Выделение краев
Один из ключевых моментов обработки изображений – выделение объектов с помощью их контуров. В scikit-image для этого предусмотрен метод
canny
.from skimage.feature import canny
# Выделение контуров методом Кэнни
edges = canny(gray_image, sigma=1)
# Отображение контуров
plt.imshow(edges, cmap='gray')
plt.axis('off')
plt.show()
Алгоритм Кэнни позволяет легко находить границы объектов, например, очертания фасадов зданий.
sigma
регулирует уровень сглаживания: чем выше значение, тем более сглаженные контуры вы получите.---
### 4. Изменение размера изображения
Для обработки больших изображений иногда требуется изменить их размер — уменьшить или увеличить, сохранив пропорции. Воспользуемся функцией
resize
.from skimage.transform import resize
# Уменьшение изображения до 50% от исходного размера
resized_image = resize(image, (image.shape[0] // 2, image.shape[1] // 2))
# Отображение уменьшенного изображения
plt.imshow(resized_image)
plt.axis('off')
plt.show()
Теперь вы можете работать с более компактной версией изображения, экономя память и время выполнения операций.
---
### 5. Применение фильтров
Фильтрация изображений – это не только Instagram-эффекты, но и полезный инструмент для устранения шума. Попробуем применить гауссовское размытие с использованием функции
gaussian
.from skimage.filters import gaussian
# Применение размытия
blurred_image = gaussian(gray_image, sigma=2)
# Отображение результата
plt.imshow(blurred_image, cmap='gray')
plt.axis('off')
plt.show()
Функция
gaussian
смягчает резкие переходы, убирая мелкие дефекты и шум, но при этом сохраняя основные структуры.---
### Пару слов в завершение
Библиотека scikit-image – это настоящий швейцарский нож для работы с изображениями. В ней есть инструменты для сегментации, изменения формата, выделения объектов, анализа текстур и множества других задач. Главное – терпеливо экспериментировать и искать подходящее решение. У scikit-image удобная документация, а её функционал способен удовлетворить как новичков, так и опытных специалистов.
Эти примеры – всего лишь первая ступенька в лестнице возможностей scikit-image.