Windows Script Host (WSH) est le système Microsoft permettant d’exécuter des scripts vbscript et JScript (à ne pas confondre avec JavaScript).
Permettez-moi de vous présenter le projet libre pystdlib4wsh.
Il s’agit d’une couche d’abstraction implémentant une (petite) partie de la bibliothèque standard de Python pour WSH.
Pourquoi ?
Sous Linux, l’utilisateur dispose du bash et de Python comme langages de scripts livrés la plupart du temps.
Sous Windows il peut utiliser un antique script bat/cmd, depuis MS-DOS. Option très limitée. Il peut utiliser PowerShell sur les versions récentes. Ou WSH, inclus d’office depuis Windows 98. L’installation de Python n’est pas toujours possible (en environnement pro notamment).
Faute de mieux, je suis parfois contraint d’écrire des (petits) scripts WSH pour simplifier/automatiser des traitements dans le cadre professionnel. J’ai donc entrepris de créer une implémentation partielle de la bibliothèque standard de Python. Celle-ci est à mon avis bien plus lisible que la création d’objets COM pour effectuer les opérations basiques (ouverture de fichier, téléchargement, etc.).
Une sorte de kit de survie pour adoucir un peu la tâche de création de scripts lorsque l’on est contraint de passer par du WSH, en contexte professionnel par exemple.
Il peut également s’entendre que les scripts rédigés en utilisant cette couche d’abstraction seraient à priori, dans une certaine mesure, moins difficiles à traduire en Python par la suite.
Les interfaces implémentées
L’ensemble est intégralement codé en JScript, divisé pour le moment en trois pseudo-modules (os, IO, requests)
- IO : La méthode open() permet la lecture et l’écriture de fichiers textes (objet TextIOBase) ou binaires (objet RawIOBase). La classe configparser permet en outre de lire les fichiers ini en offrant une interface analogue à ce qui se fait en Python.
- requests : La méthode urlopen() permet de télécharger un contenu distant.
- os : Les fonctions dirname() et exists() correspondant à leurs homologues Python.
En pratique
La documentation de référence est tout simplement la documentation de la bibliothèque standard de Python.
L’implémentation est améliorée à l’usage au fur et à mesure des contributions. Que ce soient des remontés de besoin ou des propositions de morceaux de code. Cette implémentation n’a pas vocation à fournir 100% de compatibilité avec les modules concernés. Plutôt de répondre convenablement à 80% des besoins avec 20% d’implémentation, conformément au principe de Pareto.
Et bien sûr vous trouverez via le lien vers le projet le code source et des exemples concrets d’utilisation.
Aller plus loin
- Github (134 clics)
# Je vois double
Posté par Frédéric Heulin . Évalué à 2.
Un admin pour nettoyer le malencontreux copié/collé d'une partie de l'article ?
[^] # Re: Je vois double
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 3.
Je pensais que les interfaces sont doublement implémentés pour plus de robustesse ou quelque autre raison.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: Je vois double
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Corrigé, merci.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.