Skip to content
Snippets Groups Projects
7_Modules_et_paquets.ipynb 20.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • Alessandro Cerioni's avatar
    Alessandro Cerioni committed
    {
     "cells": [
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "# Les modules\n",
        "cf. https://python101.pythonlibrary.org/chapter36_creating_modules_and_packages.html"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "Allons consulter le fichier `arithmetic.py` contenu dans le répertoire courant..."
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 1,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "import arithmetic"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 2,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "13\n",
          "5\n",
          "0.2857142857142857\n",
          "72\n"
         ]
        }
       ],
       "source": [
        "print(arithmetic.add(5, 8))\n",
        "print(arithmetic.subtract(10, 5))\n",
        "print(arithmetic.division(2, 7))\n",
        "print(arithmetic.multiply(12, 6))"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 3,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "13"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 3,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "import arithmetic as toto\n",
        "toto.add(5, 8)"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "# Les paquets"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "Allons consulter le sous-répertoire `mymath` du répertoire courant..."
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 4,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "13\n",
          "5\n",
          "0.2857142857142857\n",
          "72\n"
         ]
        }
       ],
       "source": [
        "import mymath\n",
        "\n",
        "print(mymath.add(5, 8))\n",
        "print(mymath.subtract(10, 5))\n",
        "print(mymath.division(2, 7))\n",
        "print(mymath.multiply(12, 6))"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 5,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "72"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 5,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "import mymath as tata\n",
        "tata.multiply(12, 6)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 6,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "from mymath import add"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 7,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "6"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 7,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "add(2, 4)"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "# Un petit catalogue de paquets (très) utiles \n",
        "cf. https://docs.python.org/3/library/"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## [os](https://docs.python.org/3/library/os.html)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 8,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "import os"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 9,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "#dir(os)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 10,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
           "'/home/acerioni/devel/python101'"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 10,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "os.getcwd()"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 11,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "'voici/un/chemin/de/acces'"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 11,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "os.path.join('voici', 'un', 'chemin', 'de', 'acces')"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## [sys](https://docs.python.org/3/library/sys.html)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 12,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "import sys"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 13,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "'utf-8'"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 13,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "sys.getdefaultencoding()"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 14,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
           "['/home/acerioni/devel/python101/venv/lib/python3.7/site-packages/ipykernel_launcher.py',\n",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
           " '-f',\n",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
           " '/home/acerioni/.local/share/jupyter/runtime/kernel-63d60470-7896-4dbd-874f-7c6a76e3aed6.json']"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 14,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "sys.argv"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## [time](https://docs.python.org/3/library/time.html)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 15,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "import time"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 16,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
           "1583792633.057946"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 16,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "time.time()"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 17,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          "2.0024161338806152\n"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         ]
        }
       ],
       "source": [
        "start = time.time()\n",
        "\n",
        "time.sleep(2)\n",
        "\n",
        "end = time.time()\n",
        "\n",
        "print(end-start)"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## [datetime](https://docs.python.org/3/library/datetime.html)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 18,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "import datetime"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 19,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
           "datetime.datetime(2020, 3, 9, 23, 23, 55, 97904)"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 19,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "dt = datetime.datetime.now()\n",
        "dt"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 20,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          "2020-03-09 23:23:55.097904\n"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         ]
        }
       ],
       "source": [
        "print(dt)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 21,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
           "2020"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 21,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "dt.year"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 22,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "datetime.datetime"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 22,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "type(dt)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 23,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "True"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 23,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "dt.tzinfo is None"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## [pytz](https://pythonhosted.org/pytz/)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 24,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "import pytz"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 25,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
           "datetime.datetime(2020, 3, 9, 23, 23, 55, 153883, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>)"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 25,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "dt2 = datetime.datetime.now(pytz.timezone('Europe/Paris'))\n",
        "dt2 "
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 26,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
           "<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 26,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "dt2.tzinfo"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 27,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          "2020-03-09 23:23:55.153883+01:00\n"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         ]
        }
       ],
       "source": [
        "print(dt2)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 28,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          "2020-03-09 18:23:55.153883-04:00\n"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         ]
        }
       ],
       "source": [
        "print(dt2.astimezone(pytz.timezone('America/New_York')))"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 29,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          "2020-03-09T23:23:55+0100\n"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         ]
        }
       ],
       "source": [
        "print(dt2.strftime(\"%Y-%m-%dT%H:%M:%S%z\"))"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 30,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          "2020-03-09T22:23:55Z\n"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         ]
        }
       ],
       "source": [
        "print(dt2.astimezone(pytz.utc).strftime(\"%Y-%m-%dT%H:%M:%SZ\"))"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "cf. https://en.wikipedia.org/wiki/ISO_8601"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## [logging](https://docs.python.org/3/library/logging.html)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 31,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "import logging\n",
        "\n",
        "logger = logging.getLogger()\n",
        "logger.setLevel(logging.DEBUG)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 32,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "INFO:root:Ceci est un message d'info.\n"
         ]
        }
       ],
       "source": [
        "logging.info(\"Ceci est un message d'info.\")"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 33,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "DEBUG:root:Ceci est un message de debug.\n"
         ]
        }
       ],
       "source": [
        "logging.debug(\"Ceci est un message de debug.\")"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## [json](https://docs.python.org/3/library/json.html)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 34,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "import json"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 35,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "my_dict = {\"key1\": \"value1\", \"key2\": 2}"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 36,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "dict"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 36,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "type(my_dict)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 37,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          "{'key1': 'value1', 'key2': 2}\n"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         ]
        }
       ],
       "source": [
        "print(my_dict)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 38,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          "{\"key1\": \"value1\", \"key2\": 2}\n"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         ]
        }
       ],
       "source": [
        "print( json.dumps( my_dict ) )"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 39,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "str"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 39,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "type( json.dumps( my_dict ) )"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "Cela fait la même chose que "
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 40,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
           "\"{'key1': 'value1', 'key2': 2}\""
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 40,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "str(my_dict)"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "...mais le paquet `json` offre des fonctionnalités supplémentaires. Ex. :"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 41,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "{\n",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          "    \"key1\": \"value1\",\n",
          "    \"key2\": 2\n",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
          "}\n"
         ]
        }
       ],
       "source": [
        "print( json.dumps(my_dict, indent=4) )"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 42,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "{\n",
          "    \"key1\": \"value1\",\n",
          "    \"key2\": 2\n",
          "}\n"
         ]
        }
       ],
       "source": [
        "print( json.dumps(my_dict, indent=4, sort_keys=True) )"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "De plus, c'est très utile pour écrire sur disque des dictionnaires Python, au format JSON :"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 43,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "with open('my_dict.json', 'w') as fp:\n",
        "    json.dump(my_dict, fp)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 44,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "del my_dict"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 45,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "with open('my_dict.json', 'r') as fp:\n",
        "    my_dict = json.load(fp)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 46,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "{'key1': 'value1', 'key2': 2}"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 46,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "my_dict"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 47,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "dict"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 47,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "type(my_dict)"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## [PyYAML](https://pyyaml.org/)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 48,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "import yaml"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 49,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "with open('my_dict.yaml', 'w') as fp:\n",
        "    yaml.dump(my_dict, fp, default_flow_style=False)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 50,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "del my_dict"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 51,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "with open('my_dict.yaml', 'r') as fp:\n",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
        "    my_dict = yaml.full_load(fp)"
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 52,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "{'key1': 'value1', 'key2': 2}"
          ]
         },
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "execution_count": 52,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "my_dict"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## [pickle](https://docs.python.org/3/library/pickle.html)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 53,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "import pickle"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 54,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "with open('my_dict.pkl', 'wb') as fp:\n",
        "    pickle.dump(my_dict, fp)"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 55,
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "metadata": {},
       "outputs": [],
       "source": [
        "del my_dict"
       ]
      },
      {
       "cell_type": "code",
    
    Alessandro Cerioni's avatar
    Alessandro Cerioni committed
       "execution_count": 56,