Simplifier l'usage de WSH avec pystdlib4wsh

Posté par Taratata37 . Édité par Ysabeau 🧶 🧦, palm123, Benoît Sibaud, Pierre Jarillon et gUI. Modéré par gUI. Licence CC By‑SA.
Étiquettes :
15
9
déc.
2023
Programmation

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

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.