Archive for the 'Python' Category

Python xls2csv : mise à jour et version 0.2

Wednesday, May 27th, 2009

Une mise à jour du programme xls2csv.py :
-> amélioration du traitement des options en ligne de commande
-> nouvelles options : possibilité de supprimer des lignes et des colonnes durant le processus de conversion dans le document final
-> conversion par générateur python (yield)
-> passage de la licence LGPL v3 à simplified BSD

Téléchargement : xls2csv.py

Python : cryptographic hashes, md5, sha … so pySummer is born !

Friday, May 15th, 2009

Tout transfert de données sur le Net nécessite de vérifier l’authenticité des fichiers qui transitent sur le réseau. Les sommes de contrôle, telles MD5 ou SHA viennent à la rescousse. Cependant, il est aussi fréquent d’appliquer ce genre de traitement à des arborescences complètes de fichiers, en prévision de leur copie sur un autre média (cd, dvd, disque, etc …).

Je n’avais jamais l’outil adéquat capable de générer et de vérifier tout type de somme de contrôle sous la main. Heureusement, Python propose depuis la version 2.5 la bibliothèque hashlib encapsulant les fonctions de la librairie openssl.

Sauf qu’écrire un script à chaque utilisation spécifique, même si celà ne prend que quelques minutes, c’est réinventer périodiquement la roue. J’ai donc décidé d’écrire un script pour combler cette lacune : ainsi est né pySummer. Ce code ressemble plus à un script qu’à un module, il est tout frais développé, donc largement améliorable … il a surtout le mérite d’exister et de rendre service !

L’idée est donc de proposer les algorithmes fournis par le module haslib de Python, non seulement sur de simples fichiers mais aussi de manière récursive sur une arborescence de répertoires. J’ai même essayé de proposer un moyen de deviner le type de somme de contrôle, lors de la  vérification des sommes.

En ligne de commande, celà donne :
Usage: pySummer.py [options] arg
Options:
-h, –help       show this help message and exit
-r               recursively calculate checksums
-c               check sums
–hash=HASHNAME  select hash algorithm

Soit pour une arborescence :
la création des sommes (SHA-1 par défaut) :
$ python pySummer.py -r my_topdir/ > file.sums
ou
$ python pySummer.py –hash sha224 -r my_topdir/ > file.sums

la vérification des sommes (avec détection automatique) :
$ python pySummer.py -c file.sums (évidemment, il faut être dans le “bon” répertoire, car les chemins stockés sont relatifs. Le comportement est identique à celui des outils classiques comme md5sum, sha1sum, etc …)

Pour les téléchargements, c’est par ici !

Commentaires, améliorations sont les bienvenues.

Python, Windows et les privilèges !

Monday, April 6th, 2009

Il existe bien évidemment l’indispensable module pywin32 permettant d’accéder aux fonctions de l’API windows. Cependant, il arrive que seul un sous ensemble de ces fonctionnalités soit utiles à un projet.

Dans le cas présent, il s’agit d’obtenir les privilèges pour effectuer des actions comme redémarrer la machine locale par exemple.

Ce premier article a pour but de donner les noms des fonctions à utiliser ainsi que les liens vers la documentation associée :

Exemple de code : http://msdn.microsoft.com/en-us/library/aa446619(VS.85,printer).aspx
OpenProcessToken function : http://msdn.microsoft.com/en-us/library/aa379295(VS.85,printer).aspx
LookupPrivilegeValue function : http://msdn.microsoft.com/en-us/library/aa379180(VS.85,printer).aspx
AdjustTokenPrivileges function : http://msdn.microsoft.com/en-us/library/aa375202(VS.85,printer).aspx

Le prochain article abordera la création d’un module d’extension pour Python, si possible directement conpatible 2.x / 3.x

Python : le serpent à deux têtes

Friday, December 5th, 2008

Riche début de mois de décembre pour le langage de programmation Python. A 24 heures d’intervalle, sortent deux versions : la 2.6.1 (bugfix) et la 3.0 (release).

Quelle version choisir ?

  • La 2.6.x pour tous les développements actuels car la plupart des extensions du langage sont disponibles immédiatement en versions précompilées (linux, win, et mac).
  • La 3.0 pour des projets et des développeurs qui décident de compiler eux-mêmes leurs extensions (voire l’interpréteur lui-même)

Remarque : la série 2.6 permet de préparer une transition en douceur vers la série 3, et l’outil 2to3 présent dans la série 2.6 est là pour faire ce travail serainement.

Ma préférence : travailler directement avec la version 3.0 pour les nouveaux projets et profiter de toutes les évolutions du langage. Je conseillerai à un débutant de commencer directement avec la série 3 et ses nouveautés.

Happy coding !

Sorties de logiciels

Sunday, October 5th, 2008

Le mois d’octobre commence bien :

  • Tout d’abord la sortie de Python en version 2.6 : la transition vers Python 3000 est en marche, un lot de nouveautés à découvrir sur la page principale du projet et une toute nouvelle présentation de la documentation (bien plus jolie à mon goût)
  • Et tout récemment, la sortie de GIMP en version 2.6 - aussi, quelle coincidence !! - version que je n’ai pu tester pour l’heure et qui elle aussi marque une étape dans l’avancement de ce projet. GIMP est un incontournable du logiciel libre pour la manipulation d’images de type “bitmap” au sens large et avec son pendant vectoriel qu’est Inkscape, la boîte à outils des graphistes en herbe est bien remplie !