Вызов скриптов и библиотек на других языках
Обладая базовым уровнем знаний Python, можно выдать продукт, сопоставимый с готовыми решениями лидеров рынка. Количество готового кода постоянно растет, поэтому основное, что должен понять начинающий кодер, прежде чем накинуться на решения задачи и ее реализацию в коде - нужно потратить немного времени на поиск готовых решений. Другой вопрос, каково качество этого кода?
Вряд ли начинающий кодер будет допущен до какой-то уникальной задачи, следовательно, вероятность найти готовое или похожее решение совсем ненулевая. Но здесь тебя могут подстерегать «грабли» — решение может быть на другом языке.
Получается, готовое решение любой задачи можно загуглить?
И что тогда? Учить 100500 языков?
Python позволяет осуществлять вызовы скриптов и библиотек на других языках. И для этого не обязательно их учить, главное – понимать, что подавать на вход и что ты получишь на выходе. Как раз похожий кейс возник и у нас.
И в чем заключался кейс?
При решении задачи по анализу диалогов клиентов и брокеров, для получения информации по полу и возрасту клиента, нужно было получить спектральные и частотные результаты обработки аудио файлов в конкретном виде. Усиленное гугление выдало, что результаты в данном виде могут быть получены после обработки аудио с помощью функции specan языка R. Прямого аналога данной функции в Python опознано не было, возможные варианты получения аналогичных данных с помощью Фурье навевали тоску. Дальнейший поиск выдал решение — запускаем функции R напрямую из Python. Способов такого запуска существует несколько: можно использовать специализированные библиотеки или осуществить исполнение скриптов с помощью командной строки (command line tools) + промежуточное хранение файлов на диске (filling air gap).
И как конкретно был решен вопрос?
Мы выбрали command line tools, так как для этого не требовалась установка дополнительных модулей и их настройка:
1) Заюзаем builtin модуль Python subprocess, с его помощью запускаем процесс, через который вызываем запуск скрипта на R.
2) Запущенный скрипт на R осуществляет обработку аудио в части снятия аудиохарактеристик файла и их записи в файл «data.csv» с использованием библиотек warbleR и tuneR. Передача параметров в скрипт R осуществляется через аргументы как при вызове файла из командной строки.
На выходе в папке «./data/tmpcsv/» получаем файл csv, в котором записаны аудиохарактеристики файлов, доступный для обработки в Python.
В итоге, мы выяснили, что из Python можно легко запустить скрипт на R и организовать обмен данными с помощью инструментов командной строки. Конечно, есть более продвинутые способы, в частности, взаимодействие с языком R можно производить с помощью библиотек rpy2 и reticulate. Но это уже совсем другая история…
Аналогично с помощью похожих инструментов можно организовать взаимодействие Python с любым другим языком программирования.