Использование внешних процессов в Python с помощью subprocess
В мире программирования бывают моменты, когда необходимо взаимодействовать с внешними программами из кода на
Что такое
Пример использования
В данном примере мы использовали
Передача данных и получение результата:
В данном примере мы использовали команду
#theory // just python
В мире программирования бывают моменты, когда необходимо взаимодействовать с внешними программами из кода на
Python. Для этих задач отлично подходит модуль subprocess, который предоставляет удобный способ запуска внешних процессов, передачи данных им и получения результатов выполнения.Что такое
subprocess?subprocess - это модуль Python, который предоставляет множество возможностей для запуска новых процессов, подключения к существующим процессам, а также обмена данными между вашим кодом и внешними программами.Пример использования
subprocess:import subprocess
# Простой пример: выполнение команды "ls" в командной строке
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, text=True)
# Вывод результата выполнения команды
print(result.stdout)
В данном примере мы использовали
subprocess.run для выполнения команды "ls -l". Параметр stdout=subprocess.PIPE указывает на перенаправление вывода команды в переменную result.stdout. Параметр text=True гарантирует, что вывод будет в текстовом формате.Передача данных и получение результата:
import subprocess
# Передача данных в команду и получение результата
input_data = "Hello, subprocess!"
result = subprocess.run(['echo', input_data], stdout=subprocess.PIPE, text=True)
# Вывод результата выполнения команды
print(result.stdout)
В данном примере мы использовали команду
echo для вывода переданных данных. subprocess.run позволяет передавать данные в команду через параметр input.subprocess также предоставляет множество других функций для более сложных сценариев взаимодействия с процессами, таких как запуск процесса в фоновом режиме, обработка ошибок, а также потоковый вывод данных.#theory // just python
from __future__ import
Одним из последствий популярности Python является то, что постоянно разрабатываются и выходят новые версии. Новые версии — новые возможности, но только не для вас, если вы пользуетесь устаревшей.
Впрочем, не всё так плохо. Модуль __future__ даёт возможность импортировать функциональность будущих версий Python. Это прямо как путешествие во времени, или магия:
Почему бы не попробовать импортировать фигурные скобки?
#theory // just python
Одним из последствий популярности Python является то, что постоянно разрабатываются и выходят новые версии. Новые версии — новые возможности, но только не для вас, если вы пользуетесь устаревшей.
Впрочем, не всё так плохо. Модуль __future__ даёт возможность импортировать функциональность будущих версий Python. Это прямо как путешествие во времени, или магия:
Почему бы не попробовать импортировать фигурные скобки?
#theory // just python
Создавайте видео или редактируйте видео
Модуль MoviePy — замечательный модуль, который поможет вам создавать и редактировать видео. MoviePy имеет множество функций, которые помогут вам программно редактировать видео.
Установка: `
#useful // just python
Модуль MoviePy — замечательный модуль, который поможет вам создавать и редактировать видео. MoviePy имеет множество функций, которые помогут вам программно редактировать видео.
Установка: `
pip install moviepy`#useful // just python
Форматирование многострочного вывода
Если вы хотите, чтобы вывод напоминал табличку с одинаковым отступом, то при использовании F-строк добавьте интерполируемой переменной двоеточие и число, одинаковое для всех print(), например, 10. Это «резервирует» пространство из 10 символов.
Давно гадали как выводу быть приятным и опрятным?
#theory // just python
Если вы хотите, чтобы вывод напоминал табличку с одинаковым отступом, то при использовании F-строк добавьте интерполируемой переменной двоеточие и число, одинаковое для всех print(), например, 10. Это «резервирует» пространство из 10 символов.
Давно гадали как выводу быть приятным и опрятным?
#theory // just python
Почему pprint лучше print
Стандартная функция Python print() делает своё дело. Но если попытаться вывести какой-нибудь большой вложенный объект, результат будет выглядеть не очень приятно.
Здесь на помощь приходит модуль из стандартной библиотеки pprint (pretty print). С его помощью можно выводить объекты со сложной структурой в читабельном виде.
Мастхэв для любого Python-разработчика, работающего с нестандартными структурами данных!
#theory // just python
Стандартная функция Python print() делает своё дело. Но если попытаться вывести какой-нибудь большой вложенный объект, результат будет выглядеть не очень приятно.
Здесь на помощь приходит модуль из стандартной библиотеки pprint (pretty print). С его помощью можно выводить объекты со сложной структурой в читабельном виде.
Мастхэв для любого Python-разработчика, работающего с нестандартными структурами данных!
#theory // just python
Резервирование символов
С помощью операторов > / < / ^ вы можете добавлять выходному значению символы, к примеру, облегчающие поиск среди других выходных значений.
Как видно в сниппете выше, < добавит символы после, > – до, а ^ – окружит с двух сторон.
Вперёд! Создавать резервы и окружать вывод символами!
#theory // just python
С помощью операторов > / < / ^ вы можете добавлять выходному значению символы, к примеру, облегчающие поиск среди других выходных значений.
Как видно в сниппете выше, < добавит символы после, > – до, а ^ – окружит с двух сторон.
Вперёд! Создавать резервы и окружать вывод символами!
#theory // just python
Фильтрация списка без цикла
Здесь пригодится модуль itertools. Если есть два списка с именами и идентификаторами, то вы можете выбрать из списка leaders только те, где значения selector равны единице.
А вы знаете ещё способы фильтрации без цикла?
#theory // just python
Здесь пригодится модуль itertools. Если есть два списка с именами и идентификаторами, то вы можете выбрать из списка leaders только те, где значения selector равны единице.
А вы знаете ещё способы фильтрации без цикла?
#theory // just python
Проверка на анаграммность
Проверить, являются ли строки анаграммами (например, в результате случайной перестановки букв) поможет класс Counter модуля collections.
#theory // Just Python
Проверить, являются ли строки анаграммами (например, в результате случайной перестановки букв) поможет класс Counter модуля collections.
#theory // Just Python
Транспонирование двумерного массива данных
Чтобы поменять местами строки и столбцы матрицы, созданной с помощью встроенных типов данных, воспользуйтесь функцией zip.
Если вы регулярно сталкиваетесь с подобными задачами, вместо таких трюков в Python принято использовать библиотеку NumPy.
#theory // Just Python
Чтобы поменять местами строки и столбцы матрицы, созданной с помощью встроенных типов данных, воспользуйтесь функцией zip.
Если вы регулярно сталкиваетесь с подобными задачами, вместо таких трюков в Python принято использовать библиотеку NumPy.
#theory // Just Python
Удаление дубликатов в спискеУдаление дубликатов в спискев
Среди регулярно используемых трюков в Python – это преобразование списка во множество и обратно в список для удаления повторяющихся элементов списка. Но множества – это неупорядоченные последовательности. Часто стоит задача сохранить порядок следования элементов. Для этого удобно воспользоваться типом данных OrderedDict из модуля collections.
#theory // just python
Среди регулярно используемых трюков в Python – это преобразование списка во множество и обратно в список для удаления повторяющихся элементов списка. Но множества – это неупорядоченные последовательности. Часто стоит задача сохранить порядок следования элементов. Для этого удобно воспользоваться типом данных OrderedDict из модуля collections.
#theory // just python
Отладка регулярных выражений
Регулярные выражения Python – мощный и полезный инструмент, но отлаживать их – то еще удовольствие. Оказывается, любую регулярку можно визуализировать в виде дерева синтаксического анализа. Эта возможность языка пока экспериментальная, за нее отвечает флаг
Посмотрим на регулярное выражение для поиска тегов font. С ним что-то не так.
Теперь ясно, что именно. В закрывающем дескрипторе не экранированы квадратные скобки, поэтому он воспринимается не как тег, а как группа символов.
#theory // just python
Регулярные выражения Python – мощный и полезный инструмент, но отлаживать их – то еще удовольствие. Оказывается, любую регулярку можно визуализировать в виде дерева синтаксического анализа. Эта возможность языка пока экспериментальная, за нее отвечает флаг
re.DEBUG в методе re.compile.Посмотрим на регулярное выражение для поиска тегов font. С ним что-то не так.
Теперь ясно, что именно. В закрывающем дескрипторе не экранированы квадратные скобки, поэтому он воспринимается не как тег, а как группа символов.
#theory // just python
Выражения-генераторы
В Python есть очень удобные генераторы коллекций (списков, множеств, словарей), которые позволяют легко и быстро создавать отфильтрованные коллекции значений. А еще есть выражения-генераторы, которые не загружают коллекцию в память целиком, а выдают лишь один элемент по требованию. В некоторых случаях это позволяет существенно сэкономить расходы памяти. Единственное отличие в синтаксисе – это круглые скобки.
#theory // just python
В Python есть очень удобные генераторы коллекций (списков, множеств, словарей), которые позволяют легко и быстро создавать отфильтрованные коллекции значений. А еще есть выражения-генераторы, которые не загружают коллекцию в память целиком, а выдают лишь один элемент по требованию. В некоторых случаях это позволяет существенно сэкономить расходы памяти. Единственное отличие в синтаксисе – это круглые скобки.
#theory // just python
Распаковка аргументов
Параметры можно передать в функцию в виде списка или словаря и распаковать их автоматически, используя синтаксис
#theory // just python
Параметры можно передать в функцию в виде списка или словаря и распаковать их автоматически, используя синтаксис
* и **.Эта фича языка очень полезна, так как в Python списки, кортежи и словари широко используются в качестве контейнеров.#theory // just python
Множественное назначение
Несколько переменных назначаются в одной строке, используя распаковку кортежа. Это невероятно удобный способ разложить любой сложный объект на независимые переменные.
#theory // just python
Несколько переменных назначаются в одной строке, используя распаковку кортежа. Это невероятно удобный способ разложить любой сложный объект на независимые переменные.
#theory // just python
Извлечение части списка
Извлечение части списка – слайсинг с указанием индексов начального и конечного элементов. Вместо того, чтобы создавать копию my_list, в примере мы напрямую обращаемся к этому объекту. Это рациональное расходование памяти, и на больших объемах данных вы точно оцените эту фичу.
#theory // just python
Извлечение части списка – слайсинг с указанием индексов начального и конечного элементов. Вместо того, чтобы создавать копию my_list, в примере мы напрямую обращаемся к этому объекту. Это рациональное расходование памяти, и на больших объемах данных вы точно оцените эту фичу.
#theory // just python
«Моржовый» оператор
В данном примере
#theory // just python
В данном примере
:= присвоит значение переменной как части выражения, после будет выполнена проверка условия.#theory // just python
F-строки
F-строки олицетворяет интерполяцию, то есть включение переменных в строковые выводы.
#theory // just python
F-строки олицетворяет интерполяцию, то есть включение переменных в строковые выводы.
#theory // just python
Правдивость различных объектов
В отличие от некоторых языков программирования, в Python объект считается False, только если он пуст. Это значит, что не нужно проверять длину строки, кортежа или словаря – достаточно проверить его как логическое выражение. Разумеется, 0 – тоже False, а остальные числа – True.
#theory // just python
В отличие от некоторых языков программирования, в Python объект считается False, только если он пуст. Это значит, что не нужно проверять длину строки, кортежа или словаря – достаточно проверить его как логическое выражение. Разумеется, 0 – тоже False, а остальные числа – True.
#theory // just python
Проверка на вхождение подстроки
Можно проверить, содержится ли нужный элемент в кортеже, списке, словаре, с помощью конструкции
Но это может сработать и для строк!
#theory // just python
Можно проверить, содержится ли нужный элемент в кортеже, списке, словаре, с помощью конструкции
if item in list: Но это может сработать и для строк!
#theory // just python
Функция vars()
Функция
#theory // just python
Функция
vars() вернет атрибут dict - словарь пространства имен для модуля, класса, экземпляра или любого другого объекта с атрибутом dict. Без аргумента vars() действует как встроенная функция locals().#theory // just python
Аргументы командой строки
При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной argv во встроенном модуле
#theory // just python
При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной argv во встроенном модуле
sys. Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.#theory // just python