Временные файлы
В стандартной библиотеке Python есть модуль tempfile, который содержит классы и методы для корректной работы со временными файлами и директориями.
Функция TemporaryFile создает временный файл в системной директории и возвращает файлоподобный объект.
Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера.
Также другие процессы и приложения не смогут получить доступ к этому временному файлу.
Подписывайтесь на канал 👉@pythonofff
В стандартной библиотеке Python есть модуль tempfile, который содержит классы и методы для корректной работы со временными файлами и директориями.
Функция TemporaryFile создает временный файл в системной директории и возвращает файлоподобный объект.
Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера.
Также другие процессы и приложения не смогут получить доступ к этому временному файлу.
Подписывайтесь на канал 👉@pythonofff
👍5🔥3
Давно хотели просмотреть содержимое внешнего файла?
Часто вам может понадобиться скопировать в свой код несколько строк кода из внешнего файла. Команда %pycat избавит вас от долгой процедуры извлечения определенных данных из файла и их копирования в другой файл. Она позволяет просматривать содержимое любого файла в любом каталоге.
Подписывайтесь на канал 👉@pythonofff
Часто вам может понадобиться скопировать в свой код несколько строк кода из внешнего файла. Команда %pycat избавит вас от долгой процедуры извлечения определенных данных из файла и их копирования в другой файл. Она позволяет просматривать содержимое любого файла в любом каталоге.
Подписывайтесь на канал 👉@pythonofff
👍4
Скачиваем видео с YouTube
Пакет pytube предоставляет всю небходимую функциональность для скачивания видео с YouTube, а также для сбора всей информации о нем.
Для работы нам необходимо создать объект класса YouTube. Помимо ссылки на видео в конструктор можно передать в качестве параметров функции для обработки прогресса загрузки и завершения.
Большинство видео на ютубе не имеют аудиодорожки на потоках с высоким разрешением, свыше 720p — это связано с технологией передачи DASH, которую использует ютьюб. Решение данной проблемы покажем в следующем посте.
На картинке мы показали как отфильтровать потоки с прогрессивной передачей и выбрать из полученного списка с максимальным доступным разрешением до 720p.
Для загрузки выбранного потока используем функцию download(), в функцию можно передать в качестве параметров путь до директории для сохранения и имя файла.
Подписывайтесь на канал 👉@pythonofff
Пакет pytube предоставляет всю небходимую функциональность для скачивания видео с YouTube, а также для сбора всей информации о нем.
Для работы нам необходимо создать объект класса YouTube. Помимо ссылки на видео в конструктор можно передать в качестве параметров функции для обработки прогресса загрузки и завершения.
Большинство видео на ютубе не имеют аудиодорожки на потоках с высоким разрешением, свыше 720p — это связано с технологией передачи DASH, которую использует ютьюб. Решение данной проблемы покажем в следующем посте.
На картинке мы показали как отфильтровать потоки с прогрессивной передачей и выбрать из полученного списка с максимальным доступным разрешением до 720p.
Для загрузки выбранного потока используем функцию download(), в функцию можно передать в качестве параметров путь до директории для сохранения и имя файла.
Подписывайтесь на канал 👉@pythonofff
👍7
Выполнение внешнего кода
Любой внешний код Python из блокнота Jupyter можно запускать с помощью команды %run.
Подписывайтесь на канал 👉@pythonofff
Любой внешний код Python из блокнота Jupyter можно запускать с помощью команды %run.
Подписывайтесь на канал 👉@pythonofff
👍5
Объединяем видео и аудио потоки
Из-за технологии потоковой передачи DASH (Dynamic Adaptive Streaming over HTTP), используемой youtube, мы не можем получить сразу видео в нужном качестве со звуковой дорожкой из-за ее отсутствия в потоке.
В качестве решения мы можем по отдельности забрать аудио и видео и объединить с помощью утилиты ffmpeg. Для этого выбираем нужные потоки video и audio, после чего передаем url'ы в команду для инициирования создания процесса для скачивания и объединения потоков с помощью ffmpeg.
Подписывайтесь на канал 👉@pythonofff
Из-за технологии потоковой передачи DASH (Dynamic Adaptive Streaming over HTTP), используемой youtube, мы не можем получить сразу видео в нужном качестве со звуковой дорожкой из-за ее отсутствия в потоке.
В качестве решения мы можем по отдельности забрать аудио и видео и объединить с помощью утилиты ffmpeg. Для этого выбираем нужные потоки video и audio, после чего передаем url'ы в команду для инициирования создания процесса для скачивания и объединения потоков с помощью ffmpeg.
Подписывайтесь на канал 👉@pythonofff
👍7
Генераторы могут помочь при создании итераторов
Если создание собственного класса-итератора — редкость, то создание собственного итерабельного класса — не такая уж редкость. Итерабельный класс требует наличия метода iter, который возвращает итератор. Поскольку генераторы — это простой способ создания итератора, мы можем использовать функцию-генератор или выражение-генератор для создания наших методов iter.
Подписывайтесь на канал 👉@pythonofff
Если создание собственного класса-итератора — редкость, то создание собственного итерабельного класса — не такая уж редкость. Итерабельный класс требует наличия метода iter, который возвращает итератор. Поскольку генераторы — это простой способ создания итератора, мы можем использовать функцию-генератор или выражение-генератор для создания наших методов iter.
Подписывайтесь на канал 👉@pythonofff
Задаем ширину текста
В модуле есть fill, который позволяет задать ширину текста в символах.
Как видите в примере на картинке, слова переносятся на новые строки и ничего не обрывается на полуслове.
Подписывайтесь на канал 👉@pythonofff
В модуле есть fill, который позволяет задать ширину текста в символах.
Как видите в примере на картинке, слова переносятся на новые строки и ничего не обрывается на полуслове.
Подписывайтесь на канал 👉@pythonofff
👍6
Работа с логическими операторами
При работе с логическими значениями Python предоставляет операторы для объединения значений с использованием стандартных понятий «и», «или» и «не». Эти операторы ожидаемо представлены словами and, or и not
Подписывайтесь на канал 👉@pythonofff
При работе с логическими значениями Python предоставляет операторы для объединения значений с использованием стандартных понятий «и», «или» и «не». Эти операторы ожидаемо представлены словами and, or и not
Подписывайтесь на канал 👉@pythonofff
👍6
Операторы множеств
Множество — это коллекция, где все элементы уникальны. То есть одно и то же значение не может повторяться дважды.
Помимо обычных методов, у множеств реализована поддержка различных операторов: объединение, пересечение, симметрическая разность, обычная разность и некоторые другие.
Примеры этих операторов можете посмотреть выше на картинке. Реализовано подобное поведение с помощью магических методов, про которые уже не раз говорили на канале.
Подписывайтесь на канал 👉@pythonofff
Множество — это коллекция, где все элементы уникальны. То есть одно и то же значение не может повторяться дважды.
Помимо обычных методов, у множеств реализована поддержка различных операторов: объединение, пересечение, симметрическая разность, обычная разность и некоторые другие.
Примеры этих операторов можете посмотреть выше на картинке. Реализовано подобное поведение с помощью магических методов, про которые уже не раз говорили на канале.
Подписывайтесь на канал 👉@pythonofff
👍9
Выражения-генераторы — это синтаксис
Похожий на синтаксис представления списка (list comprehension), который позволяет нам создать объект-генератор.
Допустим, у нас есть представление-списка, который фильтрует пустые строки из файла и удаляет переход на новую строку в конце \n:
Подписывайтесь на канал 👉@pythonofff
Похожий на синтаксис представления списка (list comprehension), который позволяет нам создать объект-генератор.
Допустим, у нас есть представление-списка, который фильтрует пустые строки из файла и удаляет переход на новую строку в конце \n:
Подписывайтесь на канал 👉@pythonofff
👍6
Работаем с буфером обмена
Здесь всё просто: есть пакет pyperclip, который позволяют отправлять текст в буфер обмена вашего компьютера и получать его оттуда.
В этом пакете есть две основные функции — copy() и paste(), по названию которых понятно их предназначения.
Таким образом, можно прямо через код копировать вывод программы в буфер обмена вместо того, чтобы делать это вручную.
Подписывайтесь на канал 👉@pythonofff
Здесь всё просто: есть пакет pyperclip, который позволяют отправлять текст в буфер обмена вашего компьютера и получать его оттуда.
В этом пакете есть две основные функции — copy() и paste(), по названию которых понятно их предназначения.
Таким образом, можно прямо через код копировать вывод программы в буфер обмена вместо того, чтобы делать это вручную.
Подписывайтесь на канал 👉@pythonofff
👍3
Выражения-генераторы — это синтаксис
Похожий на синтаксис представления списка (list comprehension), который позволяет нам создать объект-генератор.
Допустим, у нас есть представление-списка, который фильтрует пустые строки из файла и удаляет переход на новую строку в конце \n:
Подписывайтесь на канал 👉@pythonofff
Похожий на синтаксис представления списка (list comprehension), который позволяет нам создать объект-генератор.
Допустим, у нас есть представление-списка, который фильтрует пустые строки из файла и удаляет переход на новую строку в конце \n:
Подписывайтесь на канал 👉@pythonofff
👍2
Как работают статические методы
Статические методы создаются в классе при помощи декоратора @ staticmethod. Такие методы привязаны к классу, а не объекту — в этом и есть основное отличие.
Такой тип методов не может модифицировать ни объект, ни сам класс. То есть передавать объект или класс и прописывать self или cls в аргументах не нужно.
Обычную функцию стоит вносить в класс в качестве статического метода в том случае, когда эта функция логически относится к классу и имеет смысл там быть.
Подписывайтесь на канал 👉@pythonofff
Статические методы создаются в классе при помощи декоратора @ staticmethod. Такие методы привязаны к классу, а не объекту — в этом и есть основное отличие.
Такой тип методов не может модифицировать ни объект, ни сам класс. То есть передавать объект или класс и прописывать self или cls в аргументах не нужно.
Обычную функцию стоит вносить в класс в качестве статического метода в том случае, когда эта функция логически относится к классу и имеет смысл там быть.
Подписывайтесь на канал 👉@pythonofff
👍8
Функции-генераторы
Они отличаются от обычных функций тем, что в них есть один или несколько операторов yield
Подписывайтесь на канал 👉@pythonofff
Они отличаются от обычных функций тем, что в них есть один или несколько операторов yield
Подписывайтесь на канал 👉@pythonofff
👍5👎4
Хэширование
Хэш — это целое число фиксированного размера, которое идентифицирует определенное значение. Каждое уникальное значение должно иметь свой собственный хэш.
Для хэширования значений есть встроенная функция hash(). Используется она в основном для сравнения значений разных объектов — сравнивать хэши легче и выгоднее.
Но изменяемые объекты по типу списков и словарей нельзя хэшировать — интерпретатор выбросит соответствующую ошибку.
Здесь, кстати, есть две пасхалки. Хэш бесконечности равен перым цифрам числа Пи, а хэш Not a Number равен нулю.
А еще случаются коллизии: например, хэши чисел -1 и -2 одинаковы.
Подписывайтесь на канал 👉@pythonofff
Хэш — это целое число фиксированного размера, которое идентифицирует определенное значение. Каждое уникальное значение должно иметь свой собственный хэш.
Для хэширования значений есть встроенная функция hash(). Используется она в основном для сравнения значений разных объектов — сравнивать хэши легче и выгоднее.
Но изменяемые объекты по типу списков и словарей нельзя хэшировать — интерпретатор выбросит соответствующую ошибку.
Здесь, кстати, есть две пасхалки. Хэш бесконечности равен перым цифрам числа Пи, а хэш Not a Number равен нулю.
А еще случаются коллизии: например, хэши чисел -1 и -2 одинаковы.
Подписывайтесь на канал 👉@pythonofff
👍7
Генераторы
Простой способ создания итератора.
Самый простой способ создания собственных итераторов в Python — это создание генератора.
В Python есть два способа создания генераторов.
Подписывайтесь на канал 👉@pythonofff
Простой способ создания итератора.
Самый простой способ создания собственных итераторов в Python — это создание генератора.
В Python есть два способа создания генераторов.
Подписывайтесь на канал 👉@pythonofff
👍8
Ищем 100 человек, которые пройдут 4 курса по IT бесплатно и дадут обратную связь!
Старая цена - 23 500 руб
Цена для тестовой группы - 0 руб 💯
👉🏻 Получить курсы тут
Старая цена - 23 500 руб
Цена для тестовой группы - 0 руб 💯
👉🏻 Получить курсы тут
🤮3🥰1
Очищаем строки
Чаще всего обработка входных данных сводится к преобразованию символов в верхний или нижний регистр. Иногда данные можно очистить с помощью регулярного выражения.
Но в случаях, когда задача усложняется, можно применить более удачный способ её решения. С помощью словаря со значениями для замены символов и метода translate получается крайне лаконичный код.
В примере видим, как символы переноса строки "n" и табуляции "t" заменяются на обычные пробелы, а символ "r" удаляется из строки полностью.
Подписывайтесь на канал 👉@pythonofff
Чаще всего обработка входных данных сводится к преобразованию символов в верхний или нижний регистр. Иногда данные можно очистить с помощью регулярного выражения.
Но в случаях, когда задача усложняется, можно применить более удачный способ её решения. С помощью словаря со значениями для замены символов и метода translate получается крайне лаконичный код.
В примере видим, как символы переноса строки "n" и табуляции "t" заменяются на обычные пробелы, а символ "r" удаляется из строки полностью.
Подписывайтесь на канал 👉@pythonofff
👍9
Объектно-ориентированный итератор могут экономить панять
Процессорное время и открывать для нас новые возможности.
Давайте создадим свои собственные итераторы. Для начала мы «изобретем» заново объект итератора itertools.count.
Подписывайтесь на канал 👉@pythonofff
Процессорное время и открывать для нас новые возможности.
Давайте создадим свои собственные итераторы. Для начала мы «изобретем» заново объект итератора itertools.count.
Подписывайтесь на канал 👉@pythonofff
👍4
Выделение базовой части слов
При обработки естественного языка в машинном обучении мы сталкиваемся с множеством форм слова, например, демократия и демократизация. Для машин очень важно понимать, что эти разные слова имеют одинаковую базовую форму.
Таким образом, было бы полезно при анализе текста извлекать базовые формы слов. Можно сказать, что для процесса выделения базовой части слова необходимо обрезать концы слов.
В модуле Python NLTK (Natural Language Toolkit Package) есть различные пакет, связанные с данным процессом выделения базовой части и использующие разные алгоритмы.
Один за пакетов, snowball, использует алгоритм соответственно Snowball, разработанный Мартином Портером. Алгоритм поддерживает большинство популярных языков.
Подписывайтесь на канал 👉@pythonofff
При обработки естественного языка в машинном обучении мы сталкиваемся с множеством форм слова, например, демократия и демократизация. Для машин очень важно понимать, что эти разные слова имеют одинаковую базовую форму.
Таким образом, было бы полезно при анализе текста извлекать базовые формы слов. Можно сказать, что для процесса выделения базовой части слова необходимо обрезать концы слов.
В модуле Python NLTK (Natural Language Toolkit Package) есть различные пакет, связанные с данным процессом выделения базовой части и использующие разные алгоритмы.
Один за пакетов, snowball, использует алгоритм соответственно Snowball, разработанный Мартином Портером. Алгоритм поддерживает большинство популярных языков.
Подписывайтесь на канал 👉@pythonofff
👍5