Newer
Older
{
"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",
"metadata": {},
"outputs": [],
"source": [
"import arithmetic"
]
},
{
"cell_type": "code",
"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",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"13"
]
},
"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",
"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",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"72"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import mymath as tata\n",
"tata.multiply(12, 6)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"from mymath import add"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6"
]
},
"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",
"metadata": {},
"outputs": [],
"source": [
"import os"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"#dir(os)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"os.getcwd()"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'voici/un/chemin/de/acces'"
]
},
"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",
"metadata": {},
"outputs": [],
"source": [
"import sys"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'utf-8'"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.getdefaultencoding()"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['/home/acerioni/devel/python101/venv/lib/python3.7/site-packages/ipykernel_launcher.py',\n",
" '/home/acerioni/.local/share/jupyter/runtime/kernel-63d60470-7896-4dbd-874f-7c6a76e3aed6.json']"
"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",
"metadata": {},
"outputs": [],
"source": [
"import time"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"time.time()"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
]
}
],
"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",
"metadata": {},
"outputs": [],
"source": [
"import datetime"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dt = datetime.datetime.now()\n",
"dt"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
]
}
],
"source": [
"print(dt)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dt.year"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"datetime.datetime"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(dt)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dt.tzinfo is None"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## [pytz](https://pythonhosted.org/pytz/)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"import pytz"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"datetime.datetime(2020, 3, 9, 23, 23, 55, 153883, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>)"
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dt2 = datetime.datetime.now(pytz.timezone('Europe/Paris'))\n",
"dt2 "
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dt2.tzinfo"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
]
}
],
"source": [
"print(dt2)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
]
}
],
"source": [
"print(dt2.astimezone(pytz.timezone('America/New_York')))"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
]
}
],
"source": [
"print(dt2.strftime(\"%Y-%m-%dT%H:%M:%S%z\"))"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
]
}
],
"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",
"metadata": {},
"outputs": [],
"source": [
"import logging\n",
"\n",
"logger = logging.getLogger()\n",
"logger.setLevel(logging.DEBUG)"
]
},
{
"cell_type": "code",
"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",
"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",
"metadata": {},
"outputs": [],
"source": [
"import json"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"my_dict = {\"key1\": \"value1\", \"key2\": 2}"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(my_dict)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
]
}
],
"source": [
"print(my_dict)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
]
}
],
"source": [
"print( json.dumps( my_dict ) )"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"str"
]
},
"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",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"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",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
"}\n"
]
}
],
"source": [
"print( json.dumps(my_dict, indent=4) )"
]
},
{
"cell_type": "code",
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
"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",
"metadata": {},
"outputs": [],
"source": [
"with open('my_dict.json', 'w') as fp:\n",
" json.dump(my_dict, fp)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"del my_dict"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"with open('my_dict.json', 'r') as fp:\n",
" my_dict = json.load(fp)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'key1': 'value1', 'key2': 2}"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"my_dict"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(my_dict)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## [PyYAML](https://pyyaml.org/)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"import yaml"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"with open('my_dict.yaml', 'w') as fp:\n",
" yaml.dump(my_dict, fp, default_flow_style=False)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"del my_dict"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"with open('my_dict.yaml', 'r') as fp:\n",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'key1': 'value1', 'key2': 2}"
]
},
"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",
"metadata": {},
"outputs": [],
"source": [
"import pickle"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"with open('my_dict.pkl', 'wb') as fp:\n",
" pickle.dump(my_dict, fp)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"del my_dict"
]
},
{
"cell_type": "code",