Хотя я в основном разбираюсь в C #, он всегда пригодится.

Я работаю на полную ставку back-end-разработчиком, и мой хлеб с маслом обычно - C # и Oracle, но у меня все еще есть шансы постоянно использовать Python. Хотя я предпочитаю структурные элементы, а также надежное применение типов и отладку C #, Python пригодится каждый раз, когда мне нужен автоматизированный рабочий процесс, который может или не может возникнуть снова, но когда создание целого решения кажется излишним.

Написание сценария Python может занять всего пять минут, и довольно часто эти задачи связаны с доступом к файловой системе, тогда как Python, на мой взгляд, просто прекрасен и удобен. Итак, позвольте мне немного рассказать о случаях использования приложений Python, которые я нашел в профессиональной среде.

И еще одно небольшое преимущество заключается в том, что Python очень хорошо работает с VS Code, в отличие от C #, где вам совсем немного не хватает ReSharper и других тонкостей полноценной Visual Studio. Просто откройте новый документ, напишите несколько строк кода и запустите его прямо из отладчика в VS Code, чтобы делать то, что вы хотите.

Анализ имен файлов и извлечение идентификаторов

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

Поиск и поиск даже одного из этих файлов вручную займет пять, десять минут, а поиск Windows - не совсем пример ОС Microsoft. Естественно, что все ненавидели эти задачи, и мне было достаточно сесть и написать небольшой скрипт на Python. Потребуется список входных путей и целевой каталог, список идентификаторов, которые были включены в имена файлов. Затем он будет перебирать все папки и, если он найдет файл, скопирует его в целевой каталог.

Это по-прежнему требует небольшой ручной настройки, но, как вы можете ожидать, на поиск и копирование этих файлов потребовались минуты, а не часы.

Разбор PDF-файлов и извлечение идентификаторов

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

Итак, теперь нам пришлось заново сгенерировать все затронутые файлы после исправления ошибки, но как узнать, какие из этих файлов нуждаются в регенерации? У нас были идентификаторы затронутых клиентов, но на этот раз они не были добавлены к имени файла, потому что они были сгруппированы по дате и, я полагаю, почтовому индексу.

Однако восстановление всех файлов заняло бы еще неделю, а у нас оставалось меньше дня. Вместо этого мы собрались вместе, и я написал небольшой скрипт Python, который вошел, открыл фактические файлы PDF, поискал текст, чтобы увидеть, есть ли в нем неисправная часть, а затем скопировал эти файлы в папку «to_regenerate». Этот процесс был медленным по сравнению с простым анализом имен файлов, но мы собрались вместе и запустили этот сценарий на всех компьютерах и серверах, к которым у нас был доступ, сумев проанализировать все эти файлы в разумные сроки, чтобы восстановить поврежденные файлы.

Можно ли было поступить иначе? Конечно, и локально распространяемый файл Python, вероятно, был не лучшим инструментом для этой работы. Но у нас были свободные часы, на написание подлинного сценария ушел, может быть, час, и я был в том странном состоянии, когда одновременно устал и паниковал - и все сработало.

Массовое переименование файлов

Переименование файлов часто бывает простым, когда вам нужно применить один и тот же шаблон ко всем из них. Я часто использую инструмент Windows, называемый пакетным переименованием, который довольно мощный со всеми видами префиксов, суффиксов и даже с поддержкой RegEx, но он не очень гибкий.

Если вам нужны динамические компоненты для этого процесса переименования с некоторыми условиями if и возможностями группировки, тогда Python - ваш верный друг. Вы просто пишете что-то вроде «перебрать все файлы в этой папке», а затем ряд условий, которые определяют, нужно ли переименовать этот конкретный файл и как.

В сочетании с магией RegEx это позволяет создавать очень подробные наборы правил за считанные минуты.

Массовое удаление файлов

Здесь у нас есть разделение между PowerShell и Python как моими любимыми способами обработки массового удаления. Powershell обычно делает это довольно хорошо и быстро - мне просто не нравится иметь дело с его синтаксисом. Powershell почти такой же, как PHP, и бог знает, что у меня все еще возникают воспоминания о войне каждый раз, когда я вижу знак $ перед объявлением переменной. Кроме того, у Powershell есть раздражающий способ использования непонятных флагов и синтаксиса, который вам нужен Google, чтобы понять вещи, - а Python - не такой.

Подобно переименованию, вы можете легко сделать что-то вроде «зацикливать файлы, проверять выполнение условий, удалять файл». Добавьте пробную ловушку, когда ваши коллеги вручную просматривают файлы, которые вы пытаетесь удалить, несмотря на ваше электронное письмо, чтобы не касаться этой папки, тогда вы сэкономите себе немного седых волос и сможете исправить вещи позже тем же вечером, когда они выключат свой компьютер. .

Заказ и архивирование файлов

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

Но иногда вам нужно заархивировать сотни файлов за один раз, и тогда имеет смысл написать немного «if file.endswith (fileextension): zip.add (file)» - и мое здравомыслие спасено.

Вывод: Питон хорошо мне служил однажды в синюю луну

Хотя сложные вещи можно создавать с помощью Python, а простые вещи можно автоматизировать с помощью C #, мне просто нравится, как они оба склоняются в определенном направлении, и их использование в качестве основных сильных сторон вызывает у меня теплые нечеткие чувства в холодной, суровой реальности.