#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from Python Community
⚡️ Ищем файлы по шаблону

Если вы работали с Unix-подобными ОС, то наверняка знаете, что можно выбирать файлы используя шаблоны. Вот и в Python есть такая возможность — всё благодаря модулю glob.

glob.glob(pathname, recursive=False) — находит файлы по переданному шаблону. Кстати, о шаблонах можете почитать тут. recursive говорит функции, стоит ли проходить по под-директории, например при наличии ** в шаблоне.

glob.iglob(pathname, recursive=False) — делает то же самое, что и функция выше, но возвращает итератор, что позволяет сэкономить на памяти, если файлов много.

glob.escape(pathname) — экранирует особые символы (*, ?, [).

Подробнее о модуле вы, как обычно, можете почитать на сайте документации.

#миниурок #glob
Forwarded from Python Community
⚡️Создаём файловые пути

Функционал os.path кому-то может показаться недостаточным и, чтобы не изобретать велосипед, стоит взглянуть на pathlib, добавленный с версии python 3.4.

Самый важный класс — Path. Он создаёт путь и выбирает подкласс (PosixPath, WindowsPath) на основе запущенной ОС. Подробнее можно почитать тут.

Работать с ним можно с помощью оператора "/", который добавляет второй аргумент в путь.

Ещё одной особенностью класса является совместимость с os, поскольку это PathLike объект.

P.S.
Если вы используете модуль glob, то можете его не импортировать, функционал хранится в функции pathlib.glob.

#миниурок #pathlib
Forwarded from karpov.courses
● Долгожданный match-case

Известно, что данную конструкцию всегда можно было заменить if-elif-else, но, согласитесь, при большом количестве вариантов код выглядел весьма громоздко. Теперь с помощью конструкции match-case мы избавляемся от ненужных повторов при сравнении с разными условиями. Ура, писать многоэтажные if стало ещё проще!

● Больше подробностей в ошибках

Если вы только встали на нелёгкий путь изучения Python, думаем, вы уже не раз сталкивались с сообщениями об ошибке. Теперь более явно указывается участок кода с ошибкой, а также появились подсказки, что же именно пошло не так и почему возникла ошибка. Например, если мы забыли закрыть скобку, сообщение об ошибке укажет на эту проблему, а не просто подчеркнёт место в коде, где нарушен синтаксис языка.

● Добавление новых статистических функций, работающих «из коробки», таких как correlation() и linear_regression()

Теперь проводить разведочный анализ стало проще, впрочем импортировать pandas всё ещё остается хорошей идеей.

С остальными улучшениями призываем познакомиться самостоятельно, попробовав поработать в новой версии Python!
Forwarded from Python Community
⚡️ Что такое __all__ ?

Продолжаем говорить про импорт модулей. В этот раз разберём, что такое переменная __all__ и как её использовать.

Думаю, в нескольких ваших скриптах встречается строка по типу from package import *, которая импортирует всё из модуля. Но ведь функций/классов может быть намного больше, чем вы думаете.

Чтобы не нагружать вашу программу ненужными объектами разработчики вписывают в __all__ имена доступных типов.

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

#теория
Forwarded from Python Community
⚡️ Добавляем время в программу

Модуль time позволяет замерять время выполнения кода, может заморозить программу, а также позволяет узнать текущее время.

Первую задачу выполняет функция time(), которая возвращает время в секундах. Для заморозки приложения используют команду sleep(seconds).

А вот выводом времени занимается метод strftime(), который выводит структуру, полученную, например, из gmtime() в определённом формате.

Подробнее почитать о модуле можно на сайте документации.

#миниурок #time
Forwarded from Python Community
⚡️ Что такое __pycache__

На этот раз, это не переменная, а папка, внутри которой хранятся файлы .pyc и .pyo. Зачем она нужна можно почитать в PEP 3147, а здесь будет краткое объяснение.

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

Файлы с расширением .pyc и .pyo — это байткод и оптимизированный байткод. Они создаются заново, если код программы изменился.

#теория
Forwarded from Python Community
⚡️ Работаем с логами

Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.

logging.getLogger(name=None) — возвращает экземпляр логера на основе имени. Может быть полезна при разработке модулей.

logging.basicConfig(**kwargs) — позволяет задать настройки модулю, например, имя файла (filename), формат записи (format), уровень важности (level).

debug(), info(), warning(), error(), critical() — позволяют записывать информацию в логер на определённом уровне важности.

О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.

#миниурок #logging
Forwarded from Python Community
⚡️ Что такое __all__ ?

Продолжаем говорить про импорт модулей. В этот раз разберём, что такое переменная __all__ и как её использовать.

Думаю, в нескольких ваших скриптах встречается строка по типу from package import *, которая импортирует всё из модуля. Но ведь функций/классов может быть намного больше, чем вы думаете.

Чтобы не нагружать вашу программу ненужными объектами разработчики вписывают в __all__ имена доступных типов.

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

#теория
Forwarded from Python Community
⚡️ Работаем с логами

Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.

logging.getLogger(name=None) — возвращает экземпляр логера на основе имени. Может быть полезна при разработке модулей.

logging.basicConfig(**kwargs) — позволяет задать настройки модулю, например, имя файла (filename), формат записи (format), уровень важности (level).

debug(), info(), warning(), error(), critical() — позволяют записывать информацию в логер на определённом уровне важности.

О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.

#миниурок #logging
Forwarded from Python Community
⚡️ Очередь с приоритетом

Это — разновидность очередей, в которой у каждого элемента есть свой приоритет. Модуль heapq реализует такую возможность, используя кучи — бинарные деревья, у которых родительский объект имеет значение, меньшее или равное любому из его дочерних узлов.

heappush(heap, value) — добавляет value в heap, сохраняя инвариантность кучи.

heappop(heap) — возвращает наименьшее значение из heap.

heapify(x) — превращает итерируемый объект x в кучу.

nsmallest(n, iter), nlargest(n, iter) — позволяют взять n-ное количество минимальных/максимальных элементов из iter.

#миниурок #heapq
Forwarded from Python Community
⚡️ Красивый вывод данных

Если вам приходится работать с выводом списков или словарей, то вы можете упростить себе работу, использовав pprint.

PrettyPrinter(indent=1, width=80, depth=None, stream=None) — Класс, отвечающий за перевод данных в красивый формат.

indent определяет количество отступов перед объектами, а width — ширину вывода. depth — сколько объектов необходимо рекурсивно раскрывать, а stream — куда записывать все данные (по умолчанию sys.stdout).

pprint.pprint(object, ...) — функция, упрощающая работу с классом. Принимает object, который необходимо вывести и те же параметры, что и PrettyPrinter.

#миниурок #pprint
Forwarded from Python School
Красивый вывод списка (ч.1)

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

Метод join преобразовывает список в строку, рассматривая каждый элемент как строку.
Forwarded from Python School
Queue (ч.1)

Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.

Он позволяет реализовывать такую структуру данных, как очередь. Очереди позволяют добавлять и извлекать элементы согласно определённому правилу.
Forwarded from Python School
Queue (ч.2)

Очереди «первым пришёл — первым ушёл» («first in, first out», FIFO) позволяют извлекать объекты в порядке их добавления. Из очередей «последним пришёл — первым ушёл» («last in, first out», LIFO) можно извлекать последние добавленные объекты.

Наконец, приоритетные очереди позволяют извлекать объекты согласно порядку их сортировки.
Forwarded from Python School
Подсчет вхождений в список

Используйте Counter из библиотеки коллекций, чтобы получить словарь с подсчетом всех уникальных элементов в списке
Forwarded from Python Community
⚡️ Файлы конфигурации

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

ConfigParser() — основной класс для работы с конфигами. Его можно оставить так, а можно загрузить данные, используя метод read(filename), который принимает имя файла.

Брать информацию можно используя квадратные скобки или, лучше, методом get(key, default=None).

Если вы изменили какие-то данные и хотите их сохранить, впишите метод write(file), который принимает IO файл.

#миниурок #configparser
Forwarded from Gmail Bot
✉️ Timepad <no-reply@timepad.ru>
Ссылка на трансляцию онлайн-события

Добрый день!
Напоминаем вам, что *8 июля 2021* c *18:00* до *21:00* (московское время) пройдет онлайн-событие *«Python Community Online Meetup»* , на которое вы зарегистрировались.
Вот ваша персональная ссылка на трансляцию: https://raiffeisen-events.timepad.ru/event/webinar_redirect/46853564/3febc73dab0511f65201218e3ef6cf6e95286e87/
Можно переходить уже сейчас и ждать начала.
Timepad
Организуете события? Привлекайте участников и продавайте билеты на timepad.ru. Присоединяйтесь к нам на Facebook и ВКонтакте Служба поддержки:
support@timepad.ru
+7 (495) 212–16–98 (Москва)
8 (800) 300–69–84 (по России)
Время работы (московское):
с 9:00 до 20:00 по будням
с 10:00 до 18:00 по выходным
Forwarded from iggisv9t channel
Вот так вот в исходниках CDlib. Просто по порядку пытается импортировать все пакеты. Пакет с пакетами, получается.