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.
Une réflexion au sujet de « [python] Le module pickle »