[python] Le module pickle

Dans n’importe quel language de programmation, il est souvent utile de pouvoir sauvegarder et/ou charger des paramètres de configuration.

En ce qui concerne python, nous avons à notre disposition le module pickle. Son utilisation est extrèmement simple, comme vous pourrez le voir dans l’exemple suivant :

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import os
import cPickle as pickle

# Emplacement du fichier de configuration. Il sera cree si besoin
config_file = "/home/steph/Desktop/pic_mover/pickle.pkl"

# Initialisation de 2 variables. Ces valeurs peuvent etre considerees comme des valeurs par defaut
# et resteront valides tant que le fichier de configuration n'a pas ete charge.
data_1 = "hello"
data_2 = "world"

def saveSettings():
    try:
        # Ouverture (en ecriture) du fichier de configuration
        outfile = open(config_file, 'wb')
        # Utilisation d un dictionnaire (plutot que des donnees brutes) ainsi
        # le nombre et l ordre des donnees peut changer sans causer de probleme
        pickleData = {
            'data_1' : data_1,
            'data_2' : data_2
            }
        # Ecriture du fichier
        pickle.dump(pickleData, outfile)
        # Fermeture du fichier
        outfile.close()        
    # Gestion d erreurs    
    except Exception as e:
        print(str(e))
        pass
        
def loadSettings():
    # Globalisation des donnees afin de pouvoir les modifier
    global data_1, data_2
    try:
        # Ouverture (en lecture) du fichier de configuration
        infile = open(config_file, 'rb')
        # Chargement des donnees contenues dans le fichier
        pickleData = pickle.load(infile)
        # Fermeture du fichier
        infile.close()
        # Parsing des donnees et mise à jour des variables correspondantes
        if 'data_1' in pickleData: data_1 = pickleData['data_1']
        if 'data_2' in pickleData: data_2 = pickleData['data_2']
    # Gestion d erreurs    
    except Exception as e:
        print(str(e))
        pass

# donnees originales        
print (data_1, data_2)
# modification des donnees
data_1 = "it"
data_2 = "works !"
# sauvegarde
saveSettings()
# vidage des variables
data_1 = ""
data_2 = ""
# chargement
loadSettings()
# donnees modifiees
print (data_1, data_2)

Pour résumer :
– pour faire une sauvegarde, il suffit d’ouvrir le fichier de sauvegarde, y insérer les données, et refermer le fichier.
– pour charger les données contenues dans un fichier, il suffit d’ouvrir le fichier, lire les données qu’il contient, refermer ce fichier, et enfin assigner les données à des variables.

Il est important de noter que le module Pickle fonctionne avec un grand éventail de type de données : variables, dictionnaires, listes, tuples, tableaux, objets…

Attention toutefois : vous devriez vous assurer que votre fichier de configuration ne peut pas être compromis. En effet, un fichier pickle compromis peut faire executer du code malicieux à votre script python… N’acceptez donc jamais un fichier pickle fourni par un tiers !

Pour plus d’informations sur le module Pickle, ainsi que pour d’autres utilisations possibles, veuillez vous référer à cette page.

About Captain Stouf

Spécialiste en systèmes informatiques, Développeur matériel et logiciel, Inventeur, Maker : électronique, Systems on Chip, micro-controlleurs, Internet of Things, Modélisation / Scan / Impression 3D, Imagerie…

One thought on “[python] Le module pickle

Laisser un commentaire