Serait Python faire un bon substitut pour la ligne de commande de Windows/scripts batch?
J'ai une certaine expérience avec Bash, dont je n'ai pas l'esprit, mais maintenant que je suis en train de faire beaucoup de développement de Windows je vais avoir besoin de faire des trucs de base/écrire des scripts de base à l'aide de
la ligne de commande de Windows langue. Pour une raison quelconque, a déclaré langue irrite vraiment de moi, j'envisage l'apprentissage de Python et utilisant à la place.
Python est approprié pour de telles choses? Déplacement de fichiers, création de scripts pour faire des choses comme la décompression des fichiers d'une sauvegarde et restauration d'une base de données SQL, etc.
- Oui! Je suis un converti récent. J'ai utilisé pour écrire des tonnes de windows les fichiers bat (en plus avec de NAnt) pour effectuer ces tâches, puis mis à Python et je ne pouvais pas croire à quel point beaucoup plus facile et productif, il a été.
- Voir stackoverflow.com/questions/209470/.... La réponse pour Windows est exactement le même que pour bash.
Vous devez vous connecter pour publier un commentaire.
Python est bien adapté à ces tâches, et je suppose que beaucoup plus facile de développer et de débogage de Windows fichiers batch.
La question est, je pense, de savoir comment facile et indolore, il est de veiller à ce que tous les ordinateurs que vous avez à exécuter ces scripts sur, ont installé Python.
Résumé
Windows: pas besoin de réfléchir, de l'utilisation de Python.
Unix: rapide ou d'exécution-une fois que les scripts sont pour Bash, graves et/ou de longue durée de vie scripts en Python.
Le grand talk
Dans un environnement Windows, Python est certainement le meilleur choix, car cmd est merdique, et PowerShell n'a pas vraiment encore réglé. Quoi de plus Python peut s'exécuter sur plusieurs plate-forme de sorte qu'il est un meilleur investissement. Enfin, Python dispose d'un vaste ensemble de la bibliothèque, de sorte que vous aurez presque jamais frappé le "dieu-je-ne-ne-que le" mur. Ce n'est pas vrai pour cmd et PowerShell.
Dans un environnement Linux, c'est un peu différent. Beaucoup de chemises sont plus court, plus rapide, plus efficace et souvent plus lisible dans le plus pur Bash. Mais si vous savez que votre rapide et sale script va rester autour pendant un certain temps ou devra être améliorée, aller pour Python, car il est beaucoup plus facile de maintenir et d'étendre et vous serez en mesure de faire la plupart des tâches que vous pouvez faire avec les outils GNU avec la bibliothèque standard. Et si vous ne pouvez pas, vous pouvez toujours appeler la ligne de commande à partir d'un script Python.
Et bien sûr, vous pouvez appeler Python à partir de la coquille à l'aide de option-c:
Peu plus de la littérature à propos de Python utilisée pour des tâches d'administration système:
IBM laboratoire de point de vue.
Un bel exemple de comparer bash et python pour le rapport de script.
Les bases.
Le livre incontournable.
Sûr, python est un très bon choix pour ces tâches (je suis sûr que beaucoup de recommander PowerShell à la place).
Ici est une bonne introduction à partir de ce point de vue:
http://www.redhatmagazine.com/2008/02/07/python-for-bash-scripters-a-well-kept-secret/
EDIT: à Propos du gnud préoccupation: http://www.portablepython.com/
Êtes-vous au courant de PowerShell?
@BKB a certainement une préoccupation valable. Voici quelques liens que vous aurez envie de vérifier si vous rencontrez des problèmes qui ne peuvent pas être résolus avec la bibliothèque standard:
Quelque chose c'est un bon remplacement pour le Lot de système de fichiers dans windows. Perl, Python, Powershell sont tous de bons choix.
Python est certainement bien adapté pour cela. Si vous allez dans cette voie, vous pouvez également enquêter sur SCons qui est un système de construction lui-même construit avec Python. Le truc cool, c'est les scripts de construction sont en fait complète de scripts Python eux-mêmes, de sorte que vous pouvez faire quelque chose dans le script de génération que vous, autrement, pourraient faire en Python. Il fait
make
l'air assez anémique en comparaison.Lors de la relecture de votre question, je tiens à noter que SCons est plus adapté à un logiciel de création de projets que pour le système d'écriture de scripts de maintenance. Mais je n'hésiterais pas à recommander Python à toi en tout cas.
Python, avec Pywin32, ce serait bien pour Windows automation. Cependant, VBScript ou JScript utilisé avec le Winows Hôte de Script fonctionne tout aussi bien, et ne nécessite rien de supplémentaire à installer.
En suivi, après une période d'expérimentation de la chose que j'ai trouvé Python le plus utile pour toute situation impliquant la manipulation d'un texte (yourStringHere.replace(), regexes pour des trucs plus complexe) ou des tests de concept de base très rapidement, ce qui est excellent pour.
Pour des trucs comme SQL DB restaurer les scripts j'ai trouver j'ai toujours l'habitude de simplement recourir à des fichiers batch, comme c'est généralement quelque chose d'assez court qu'il prend plus de code Python pour faire des appels système ou je peux réutiliser des bouts de code à partir d'autres personnes en réduisant les temps d'écriture à juste assez pour tordre le code existant pour l'adapter à mes besoins.
Comme un addendum je vous recommande fortement de IPython comme un grand shell interactif complet avec la saisie semi-automatique et facile docstring accès.
J'ai été en utilisant beaucoup de Les Fichiers De Script Windows ces derniers temps. Plus puissant que les scripts, et puisqu'il utilise des scripts Windows, il n'y a rien à installer.
J'ai fait une quantité décente de la programmation dans les deux Linux/Unix et Windows, Python, Perl, des fichiers batch, Bash, etc. Mon conseil est que si cela est possible, installez Cygwin, et l'utilisation de Bash (il sons à partir de votre description comme l'installation d'un langage de script ou de l'env n'est pas un problème?). Vous serez plus à l'aise avec que depuis la transition est minime.
Si ce n'est pas une option, alors voici mon point de vue. Les fichiers de commandes sont très encombrants et limitée, mais beaucoup de sens pour des tâches simples comme "copier certains fichiers" ou "redémarrer ce service". Python sera plus propre, plus facile à maintenir, et beaucoup plus puissant. Cependant, l'inconvénient est que soit vous vous retrouvez l'appel des applications externes à partir de Python avec des sous-processus, popen ou similaire. Sinon, vous finissez par écrire un tas plus de code à faire des choses qui sont relativement simples dans des fichiers batch, comme la copie d'un dossier plein de fichiers. Beaucoup de cela dépend de ce que vos scripts sont en train de faire. Texte/chaîne de traitement va être beaucoup plus propre en Python, par exemple.
Enfin, ce n'est probablement pas une solution de rechange attrayante, mais vous pourriez aussi envisager d'VBScript comme une alternative. Je n'ai pas de plaisir à travailler avec elle en tant que langue personnellement, mais si la portabilité est un type de préoccupation alors il gagne par la vertu d'être disponibles de la zone en toute copie de Windows. Parce que de ce que j'ai trouvé moi-même l'écriture de scripts qui ont été difficiles à manier que des fichiers batch en VBScript au lieu de cela, puisque je ne peux pas faire confiance à un Python ou Perl, Bash étant disponible sur Windows.
shutil
pourrait aider.Autant que j'aime python, je ne pense pas que c'est un bon choix pour remplacer windows de base des scripts batch.
Je ne peux pas voir quelqu'un d'avoir à importer des modules comme sys, os ou getopt pour faire des choses de base que vous pouvez faire avec shell, par exemple appeler un programme, vérifiez la variable d'environnement ou un argument.
Aussi, dans mon expérience, goto est beaucoup plus facile à comprendre pour la plupart des administrateurs système de l'appel de la fonction.