python, lire et écrire des fichiers xls

2012-10-15 | #excel #python

Si l’on a des fichiers Excel que l’on souhaite lire ou écrire, on peut utiliser les paquets xlrd (reader) et xlwt (writer). Voici un petit exemple de ce que l’on peut faire : #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import xlrd import codecs import os files = [u"FormatBDD_XXX_backend.xls", u"FormatBDD_XXXdata.xls", u"FormatBDD_XXX_desc.xls", u"FormatBDD_XXX_dm.xls", u"FormatBDD_dimension.xls"] for f in files: book = xlrd.open_workbook(f) for sheet_name in book.sheet_names(): base = f.replace('FormatBDD_', '') base = base.

Continuer la lecture 


bash, savoir si stdout fait référence à un terminal

2012-10-12 | #colordiff #diff

Pour savoir si la sortie standard pointe sur un terminal, on peut utiliser l’opérateur “-t” en bash. diffutil=diff if [ -t 1 ]; then if which colordiff > /dev/null; then diffutil=colordiff fi fi Dans le cas présenté, on utilisera colordiff pour le rendu sinon diff. En effet, un pipe avec less (sans l’option -R ou la variable LESS définie à -R) afficherait les caractères d’échappement servant à la colorisation des lignes

Continuer la lecture 


sql, gérer les conflits lors des inserts

2012-10-12 | #if #insert into #mysql #on duplicate key #select #tts #values

Lors d’un insert, si la clé primaire existe déjà, il est possible de faire un traitement comme dans l’exemple ci-dessous. insert into enveloppesTTS (enveloppe, tts) select enveloppe, '' as tts from enveloppes on duplicate key update enveloppesTTS.tts=if(enveloppesTTS.tts<>'',enveloppesTTS.tts,values(tts)); Ici, on tente de peupler la table enveloppesTTS avec des valeurs. Si l’entrée n’existe pas, on la crée. Sinon on met à jour un champ de cette table uniquement si sa valeur n’est pas déjà renseigné.

Continuer la lecture 


bash, voir autour des occurences avec grep...

2012-10-12 | #grep

Voici comment on peut voir les lignes proches des occurences matchées par grep $ grep -C 5 Msg_Motif_Reit etc/centralisation.yml ref_db: desc ref_table: motif select_column: motifId where_column: motifName - name: Msg_Motif_Reit comment: "nom de l'enveloppe associée au micro motif utilisé pour la reiteration" value_regex: '[\w/]+' - name: reit_ACC comment: "détermine si le client est en reiteration" Avec l’option : A : affiche les lignes après l’occurence trouvée (after) B : affiche les lignes avant l’occurence trouvée (before) C : affiche les lignes avant et après l’occurence trouvée

Continuer la lecture 


python, faire en sorte que stdin/stdout lisent et écrivent en binaire

2012-10-10 | #binary #fileno #os #python

J’ai écrit un petit programme qui s’inspire de cut en python. La lecture et l’écriture pouvant se faire sur l’entrée/sortie standard (sources ucut), j’avais des problèmes de “‘ascii’ codec can’t decode byte”… Pour y remédier, j’ai “transformé” les flux standard (mode texte) en flux binaires de la manière suivante : import sys import os sys.stdin = os.fdopen(sys.stdin.fileno(), 'rb', 0) sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0)

Continuer la lecture 


bash, vérifier si une variable matche une regexp

2012-10-10 | #bash #re #regexp

On peut facilement vérifier si une donnée contenue dans une variable est au bon format. Dans l’exemple ci-dessous, on vérifie si le numéro de version fourni est correct. if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "Le numéro de version donné '$version' n'a pas le bon format." exit 1 fi Dans celui-ci si la valeur contient localhost ou itg [[ $environnement =~ localhost|itg ]] && echo 1 Attention, la regexp n’est pas entre quote ni double-quote.

Continuer la lecture 


vi et les macros

2012-09-27

Via un petit exemple… Permet de supprimer le premier mot de chaque ligne du buffer. gg permet d’aller en début de fichier qq démarre l’enregistrement de la macro de nom q (la 2e lettre) dwj supprime le premier mot et descend de ligne @q appelle la macro q pour revenir au mode de vi “normal” q pour terminer l’enregistrement de la macro @q pour appeler la macro

Continuer la lecture 


bash, swap de 2 fichiers

2012-09-25 | #bash #commande #mv #tempfile

Le code suivant à ajouter au bashrc permet de swapper ou plutôt échanger 2 fichiers rapidement. function swap() { if [[ -e "$1" && -e "$2" ]] # if files exist then local TMPFILE=$(tempfile) mv "$1" $TMPFILE mv "$2" "$1" mv $TMPFILE "$2" else echo "Error: Make sure the files exist." fi } Et son exemple : $ echo x>x $ echo y>y $ swap x e Error: Make sure the files exist.

Continuer la lecture 