déjà le mode binaire est-il obligatoire ou est-ce juste pour la vitesse de lecture/interprétation de Python?
Oui c'est obligatoire : pickle est un format binaire. Ça n'a strictement rien à voir avec les performances.
Qu'est-ce qui te bloque sur les deux dernières lignes ? Tu crées un objet Pickler qui va envelopper ton fichier et tu te sers de la méthode dump pour sauvegarder ton dictionnaire dans le fichier en passant par le pickler. Je vois mal ce qu'on peut dire de plus…
Quand tu fais open(...) tu crées un objet qui représente un fichier. Tu peux considérer que cet objet sert à gérer tes opérations de lecture et d'écriture sur ce fichier, donc qu'il représente une couche d'abstraction au-dessus du fichier.
De la même façon, le Pickler représente une couche d'abstraction supplémentaire au-dessus du fichier, chargée de gérer la transformation de tes objets Python en un format binaire qui sert pour leur stockage (le format pickle) au moment où tu les écris dans le fichier avec dump, et la transformation inverse (binaire -> objet) quand tu lis le ficher avec load. En somme le Pickler représente un fichier dont le contenu est au format pickle. Tu n'as pas besoin de connaître le détail du format, il fait tout pour toi.
Dans le même genre tu peux imaginer créer un objet ZipFile autour d'un fichier ouvert en binaire, qui sert à gérer la compression ou la decompression des données au moment où elles sont lues ou écrites dans le fichier (d'ailleurs ça existe dans la bibliothèque standard de Python). Le ZipFile représente donc un fichier dont le contenu est compressé au format zip.
Le chemin est toujours relatif par rapport au repertoire courant dans lequel le programme est exécuté (os.getcwd()). Pour avoir un chemin relatif au module :
from os import path
chemin = path.join(path.dirname(__file__), chemin_relatif)
Ou en Python > 3.4 :
from pathlib import Path
chemin = Path(__file__).parent / chemin_relatif
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.