Время прочтения: 3 мин.
Решать однотипные задачи каждый день бывает скучно. Обычно мы развлекаем себя хитроумным кодом или остротами в комментариях кода. Чем ещё? Читаем дальше.
Например, перед нами стоит задача по обработке 10 000 изображений. Нужно сделать уменьшенные превьюшки, скрывающие содержание оригинала размытием, в ином формате.
К слову, это можно сделать через библиотеку pillow, о которой написано уже немало статей:
from PIL import Image
img = Image.open("picture.jpg")
# проверяем текущий размер и расширение
print(f"Формат: {img.format}, размер: {img.size}")
# задаём новые параметры и размытие
new_size = (640, 480)
new_format = "new_picture.png"
img.thumbnail(new_size)
blur = img.filter(ImageFilter.BLUR)
blur.save(new_format)
Ничего сложного. Теперь внесём то самое разнообразие. Как насчёт progressbar?
from tqdm import tqdm
from time import sleep
for i in tqdm (range(1, 1000)):
sleep(0.01)
Прописываем в цикле код нашей задачи и наблюдаем как идёт его выполнение. Результат кода выше выглядит так:
Итак, процесс пошёл, но вы понимаете, что это займёт какое-то время. Тут зовёт коллега, чтобы помочь ему с другой задачей. Вы можете себе это позволить, но вам нужно будет вернуться к себе, как только отработает ваш код. Как узнать, когда это случится? Поможет звуковой сигнал, и будет лучше если он выделится на фоне любых других системных звуков, доносящихся из компьютеров поблизости. Создадим его непосредственно в коде при помощи winsound, указав частоту и продолжительность сигнала:
import winsound
frequency = 3000
duration = 750
winsound.Beep(frequency, duration)
Хотите, чтобы об окончании вас ждало ещё что-то приятное? Как насчет эмоджи в выводе?
msg = "Код отработал " + "\N{flexed biceps}" + "\N{man dancing}" + "\N{grinning face}"
print(msg)
Если вы ведёте лог, то можно подсчитать, сколько эмоджи вы получили в течение дня. Тут пригодится знание регулярных выражений.
emojies = re.finditer('[\U0001f000-\U0001f650]', msg)
count = sum(1 for _ in emoticons)
print("Счастливых моментов:", count)
Кстати, о регулярных выражениях. Помните коллега просил нас помочь ему? Он как раз не мог справиться с ними. Ему нужно было проверить корректность введённых электронных адресов клиентов, а вы не успели написать код с применением regexp до того, как сработал ваш звуковой сигнал. Коллегу тогда спасла небольшая библиотека validate_email:
from validate_email import validate_email
isValid = validate_email("notvalid@.net") # False
isValid = validate_email("valid_mail@mail.ru") # True
Надеемся, эти «фишки» помогут вам в решении повседневных задач и добавит в них оригинальности.