Подтвердить что ты не робот

Будет ли Python хорошо заменять сценарии командной строки Windows/пакетной обработки?

У меня есть опыт работы с Bash, который я не против, но теперь, когда я делаю много Разработка Windows. Мне нужно делать основные вещи/писать основные сценарии, используя язык командной строки Windows. По какой-то причине указанный язык действительно раздражает меня, поэтому я рассматривал возможность изучения Python и использования этого.

Является ли Python подходящим для таких вещей? Перемещение файлов вокруг, создание сценариев, чтобы делать что-то вроде распаковки резервной копии и восстановления базы данных SQL и т.д.

4b9b3361

Ответ 1

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

Вопрос в том, насколько легко и безболезненно следить за тем, чтобы все компьютеры, на которых вы должны запускать эти скрипты, установили Python.

Ответ 2

Резюме

Windows: не нужно думать, используйте Python. Unix: скрипты быстрого или run-it-once для Bash, сценарии серьезных и/или длительных сроков жизни для Python.

Большой разговор

В среде Windows Python, безусловно, лучший выбор, поскольку cmd дерьмовый, а PowerShell пока еще не установлен. Что еще Python может работать на нескольких платформах, поэтому это лучшая инвестиция. Наконец, у Python есть огромный набор библиотек, поэтому вы почти никогда не ударяете о стену "бог-я-не могу". Это не относится к cmd и PowerShell.

В среде Linux это немного отличается. Многие из линейных устройств короче, быстрее, эффективнее и часто читаются в чистом виде Bash. Но если вы знаете, что ваш быстрый и грязный script будет оставаться на некоторое время или его нужно будет улучшить, перейдите на Python, так как его гораздо проще поддерживать и расширять и вы сможете выполнить большую часть задачи, которую вы можете использовать с инструментами GNU со стандартной библиотекой. И если вы не можете, вы все равно можете вызвать командную строку из Python script.

И, конечно, вы можете вызывать Python из оболочки с помощью опции -c:

python -c  "for line in open('/etc/fstab') : print line"

Еще несколько публикаций о Python, используемых для задач системного администрирования:

Ответ 5

@BKB определенно имеет серьезную озабоченность. Здесь пара ссылок, которые вы хотите проверить, если вы столкнулись с любыми проблемами, которые не могут быть решены с помощью стандартной библиотеки:

  • Pywin32 - это пакет для работы с низкоуровневыми API win32 (расширенные модификации файловой системы, интерфейсы COM и т.д.)
  • Страница Тима Golden Python: он поддерживает пакет оболочки WMI, который строит Pywin32, но не забудьте также проверить его "Win32 How Do I" , чтобы узнать, как выполнить типичные задачи Windows на Python.

Ответ 6

Любая хорошая замена для файловой системы Batch в Windows. Perl, Python, Powershell - все это хороший выбор.

Ответ 7

Python, безусловно, хорошо подходит для этого. Если вы идете по этой дороге, вы также можете изучить SCons, которая является самой сборной системой, созданной с помощью Python. Самое приятное, что скрипты сборки на самом деле являются полномасштабными скриптами Python, поэтому вы можете делать что-либо в сборке script, которую вы могли бы сделать в Python. Это делает make выглядящим довольно анемичным в сравнении.

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

Ответ 8

Python, наряду с Pywin32, будет отлично подходит для автоматизации Windows. Тем не менее, VBScript или JScript, используемые с Winows Scripting Host, работают так же хорошо и не требуют ничего дополнительного для установки.

Ответ 9

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

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

В качестве добавления я настоятельно рекомендую IPython как отличную интерактивную оболочку с завершением табуляции и легким доступом к докстории.

Ответ 10

В последнее время я использовал много Windows Script Files. Более мощный, чем пакетные скрипты, и поскольку он использует сценарии Windows, там ничего не устанавливать.

Ответ 11

Я сделал приличное количество сценариев в средах Linux/Unix и Windows, в Python, Perl, командных файлах, Bash и т.д. Мой совет: если возможно, установите Cygwin и используйте Bash (это звучит из вашего описания, например, установка языка сценариев или env - это не проблема?). Вы будете более комфортно с этим, так как переход минимален.

Если это не вариант, то вот мое взятие. Пакетные файлы очень пустые и ограниченные, но имеют большой смысл для простых задач, таких как "копировать некоторые файлы" или "перезапускать эту службу". Python будет чище, проще в обслуживании и намного более мощным. Тем не менее, недостатком является то, что либо вы вызываете внешние приложения из Python с подпроцессом, как всплывающие окна или аналогичные. В противном случае вы в конечном итоге напишите кучу большего кода, чтобы сделать вещи, которые сравнительно просты в пакетных файлах, например, копирование папки с файлами. Многое зависит от того, что делают ваши скрипты. Например, обработка текста/строки будет намного более чистым в Python.

Наконец, это, вероятно, не привлекательная альтернатива, но вы можете также рассмотреть VBScript в качестве альтернативы. Мне не нравится работать с ним как с личностью, но если мобильность - это какая-то проблема, то она выигрывает благодаря тому, что она доступна из коробки в любой копии Windows. Из-за этого я обнаружил, что писал сценарии, которые были громоздкими, как пакетные файлы в VBScript, потому что я обычно не могу зависеть от того, что Python или Perl или Bash доступны в Windows.

Ответ 12

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

Я не вижу, как кто-то должен импортировать модули, такие как sys, os или getopt, чтобы делать основные вещи, которые вы можете делать с оболочкой, например, вызывать программу, проверять переменную окружения или аргумент.

Кроме того, по моему опыту, goto намного проще понять большинству системных администраторов, чем вызов функции.