issue152:python
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| issue152:python [2020/01/04 13:39] – andre_domenech | issue152:python [2020/01/04 14:34] (Version actuelle) – auntiee | ||
|---|---|---|---|
| Ligne 5: | Ligne 5: | ||
| One thing that I've found is that when you need to (or want to) save some of the data in the middle of a process, often the pickle library is used. I've known about pickle for a long time, but have really never messed with it much, so I thought I'd explore some.** | One thing that I've found is that when you need to (or want to) save some of the data in the middle of a process, often the pickle library is used. I've known about pickle for a long time, but have really never messed with it much, so I thought I'd explore some.** | ||
| - | Dernièrement, | + | Dernièrement, |
| Voulez-vous des cornichons avec ? | Voulez-vous des cornichons avec ? | ||
| - | Une chose que j'ai découverte est que, si vous avez besoin de (ou si vous voulez) sauvegarder des données au milieu du processus, la bibliothèque pickle (cornichon) est utilisée. Je m' | + | Une chose que j'ai découverte est que, si vous avez besoin de (ou si vous voulez) sauvegarder des données au milieu du processus, la bibliothèque pickle (cornichon) est utilisée. Je connais |
| **Pickle or olive? | **Pickle or olive? | ||
| Ligne 21: | Ligne 21: | ||
| Une olive est un élément merveilleux dans le martini. Elle ne fait rien pour le code Python. C'est, cependant, une variété non venimeuse de python en Australie. | Une olive est un élément merveilleux dans le martini. Elle ne fait rien pour le code Python. C'est, cependant, une variété non venimeuse de python en Australie. | ||
| - | D'un autre côté, pickle est une méthode pour sérialiser et dé-sérialiser des structures objet de python. Si vous connaissez déjà tout ce qu'il faut savoir sur Pickles, n' | + | En revanche, pickle est une méthode pour sérialiser et dé-sérialiser des structures objet de python. Si vous connaissez déjà tout ce qu'il faut savoir sur Pickles, n' |
| **Serializing means to take an object from memory, convert it into a stream of bytes that can be stored on disk. De-serializing is the reverse of the process. Let's say you have a dictionary. You can't just dump it to disk from memory. You have to convert it into a format that lends itself to being a disk file. JSON, XML, HTML all jump to mind. Pickles are just another way to do this. There' | **Serializing means to take an object from memory, convert it into a stream of bytes that can be stored on disk. De-serializing is the reverse of the process. Let's say you have a dictionary. You can't just dump it to disk from memory. You have to convert it into a format that lends itself to being a disk file. JSON, XML, HTML all jump to mind. Pickles are just another way to do this. There' | ||
| Ligne 27: | Ligne 27: | ||
| What can you pickle? Well most Python objects can be pickled, but there are a few that can't. While you can pickle simple objects (Integers, floats, complex numbers and strings), you normally would pickle Tuples, Lists, sets and Dictionaries that are built from most objects. However, things like generators, lambda functions and defaultdicts can not be pickled. There are some workarounds, | What can you pickle? Well most Python objects can be pickled, but there are a few that can't. While you can pickle simple objects (Integers, floats, complex numbers and strings), you normally would pickle Tuples, Lists, sets and Dictionaries that are built from most objects. However, things like generators, lambda functions and defaultdicts can not be pickled. There are some workarounds, | ||
| - | « Sérialiser » signifie prendre un objet en mémoire et le convertir en un flux de bits que vous pouvez sauvegarder sur disque. Dé-sérialiser est le processus inverse. Disons que nous avons un dictionnaire. Vous ne pouvez pas le passer en bloc de la mémoire au disque. Vous devez le convertir dans un format qui l' | + | « Sérialiser » signifie prendre un objet en mémoire et le convertir en un flux de bits que vous pouvez sauvegarder sur disque. Dé-sérialiser est le processus inverse. Disons que nous avons un dictionnaire. Vous ne pouvez pas le passer en bloc de la mémoire au disque. Vous devez le convertir dans un format qui l' |
| - | Qu' | + | Qu' |
| **Pickling Process | **Pickling Process | ||
| Ligne 41: | Ligne 41: | ||
| Processus pour « pickler » | Processus pour « pickler » | ||
| - | Je veux remercier mon ami norvégien Halvard Tislavoll pour l' | + | Je veux remercier mon ami norvégien Halvard Tislavoll pour l' |
| - | Disons que vous voulez créer un jeu de couleurs qui pourraient être utilisées pour créer une interface utilisateur graphique (GUI). Tkinter (comme d' | + | Disons que vous voulez créer un jeu de couleurs qui pourraient être utilisées pour créer une interface utilisateur graphique (GUI). Tkinter (comme d' |
| Sous Ubuntu, il existe un fichier situé dans le dossier /etc/x11, appelé rgb.txt. Faites-en une copie et mettez-le dans votre dossier de travail. | Sous Ubuntu, il existe un fichier situé dans le dossier /etc/x11, appelé rgb.txt. Faites-en une copie et mettez-le dans votre dossier de travail. | ||
| Ligne 60: | Ligne 60: | ||
| Notez, s'il vous plaît, que le style de codage de Halvard n'est pas le même que le mien et je suis sûr qu'il n'est pas le même que le vôtre. Cependant, je suis sûr que vous saurez comprendre son code. | Notez, s'il vous plaît, que le style de codage de Halvard n'est pas le même que le mien et je suis sûr qu'il n'est pas le même que le vôtre. Cependant, je suis sûr que vous saurez comprendre son code. | ||
| - | Maintenant, nous pouvons commencer à créer un programme pour convertir ce texte en dictionnaire, | + | Maintenant, nous pouvons commencer à créer un programme pour convertir ce texte en dictionnaire, |
| import pickle | import pickle | ||
| Ligne 172: | Ligne 172: | ||
| « Dé-pickler » un pickle | « Dé-pickler » un pickle | ||
| - | Dé-pickler (ou dé-sérialiser), c'est simplement | + | Dé-pickler (ou dé-sérialiser) est tout aussi facile que de créer le fichier pickle une fois que vos données sont prêtes. |
| Voici un rapide bout de code que nous pouvons utiliser dans une appli en ligne de commande : | Voici un rapide bout de code que nous pouvons utiliser dans une appli en ligne de commande : | ||
| Ligne 187: | Ligne 187: | ||
| Ça marche bien seulement si le fichier pickle a été créé avec Python 3. Cependant, s'il a été créé avec Python 2 et la routine cPickle, il a des chances de sortir une erreur. Une solution de repli facile est (voir en bas à droite). | Ça marche bien seulement si le fichier pickle a été créé avec Python 3. Cependant, s'il a été créé avec Python 2 et la routine cPickle, il a des chances de sortir une erreur. Une solution de repli facile est (voir en bas à droite). | ||
| - | De toute manière, pour mes besoins, je voulais être capable de voir vraiment | + | De toute manière, pour mes besoins, je voulais être capable |
| - | Je ne vous ennuie | + | Je ne vous ennuierai |
| **We’ll look at the callback for the “get filename” button (the one that has “...” as its text) first (middle right). Basically, this simply calls a tkinter askopenfilename filedialog and puts the selected filename and path into the entry widget for display. | **We’ll look at the callback for the “get filename” button (the one that has “...” as its text) first (middle right). Basically, this simply calls a tkinter askopenfilename filedialog and puts the selected filename and path into the entry widget for display. | ||
| Ligne 200: | Ligne 200: | ||
| • Fill the text widget with the data from the structure (if possible).** | • Fill the text widget with the data from the structure (if possible).** | ||
| - | Nous regarderons d' | + | Nous regarderons d' |
| Ensuite, vient la fonction de rappel pour le bouton « GO ». C'est ici que le vrai travail se fait. La logique est de : | Ensuite, vient la fonction de rappel pour le bouton « GO ». C'est ici que le vrai travail se fait. La logique est de : | ||
issue152/python.1578141550.txt.gz · Dernière modification : 2020/01/04 13:39 de andre_domenech
