Vérifier si une chaîne de caractères peut être convertie en entier sous python

Pour vérifier si une chaîne de caractères peut être convertie en entier sous python, on peut par exemple passer par la méthode [isdigit()](https://www.tutorialspoint.com/python/string_isdigit.htm), illustration: >>> s = '17' >>> type(s) <class 'str'> >>> s.isdigit() True >>> if s.isdigit(): ... s = int(s) ... >>> type(s) <class 'int'> autre exemple >>> s = 'abc' >>> type(s) <class 'str'> >>> s.isdigit() False ### Références L

Obtenir la date et l'heure courante avec python

Pour obtenir la date et l'heure sous python il y a le module [datetime](https://docs.python.org/2/library/datetime.html): >>> import datetime Pour avoir la date et l'heure courante il faut utiliser la méthode now(): >>> date = datetime.datetime.now() >>> str(date) '2016-11-19 09:38:51.754029' l'année >>> date.year 2016 le mois >>> date.month 11 le jour >>> date.day 19 l'heure >>> date.hour 9 les minutes >>> date.minute 38 les

Retrouver l'adresse url de la page web visitée précédemment avec django ?

Note: Si l'objectif est de retrouver l'adresse url de la page web visitée précédemment pour mettre en place un lien pour revenir en arrière, on peut tout simplement utiliser javascript dans le template ***html*** (voir l'[article](/Articles/Comment-créer-un-lien-pour-revenir-à-la-page-web-précédente/) précédent) comme ceci: <a href="javascript:history.go(-1)">Retour</a> On peut aussi récupérer l'adresse url de la page précédemment visitée directement dans ***views.py*** avec la commande

Comment créer un lien pour revenir à la page web précédente

Pour récupérer l'adresse url précédemment vue par un visiteur on peut utiliser javascript comme ceci (voir aussi [History back() Method](https://www.w3schools.com/jsref/met_his_back.asp)): javascript:history.go(-1) connaissant cette adresse, on peut alors facilement implementer un lien (go back button) pour revenir à la page précédente: <a href="javascript:history.go(-1)">Retour</a> ### Références Liens | Site ------------- | ------------- [How to Create a Website Back Button](htt

Trouver les clés d'un dictionnaire associées à une valeur donnée sous python

Cas 1: la valeur est associée à une seule clé. Dans ce cas on peut faire comme dans cet exemple ([source](https://stackoverflow.com/questions/8023306/get-key-by-value-in-dictionary)), on cherche ici la clé du dictionnaire associée à la valeur 1: >>> mydict = {'a':4,'b':2,'c':5,'d':3,'e':1,'f':5} >>> print(list(mydict.keys())[list(mydict.values()).index(1)]) e Cependant cette approche donne uniquement un résultat si la valeur est associée a plusieurs clé (exemple avec 5): >>>

Extraire une liste d'éléments à partir d'une liste d'indices sous python

Avec python, pour obtenir un élément d'une liste, on peut procéder comme suit: >>> l = ['a','b','c','d','e','f'] >>> l[2] 'c' Maintenant si on veut extraire plusieurs elements à partir d'une liste d'indices, on peut passer par [itemgetter](https://docs.python.org/2/library/operator.html#operator.itemgetter): >>> from operator import itemgetter >>> l = ['a','b','c','d','e','f'] >>> i = [2,3,5] >>> itemgetter(*i)(l) ('c', 'd', 'f') ### Références Liens | Sit

Trouver tous les indices d'un élément donné dans une liste sous python

Soit [4, 2, 3, 3, 1, 1] une liste sous python et on veut trouver tous les indices correspondant à la valeur 3. Cependant dans cette liste il existe plusieurs fois la valeur 3. Pour trouver tous les indices associés à cette valeur, on peut alors par exemple utiliser les "[List Comprehensions](http://www.secnetix.de/olli/Python/list_comprehensions.hawk)" avec [enumerate](http://book.pythontips.com/en/latest/enumerate.html), illustration: >>> mylist = [4, 2, 3, 3, 1, 1] >>> [idx for idx,e

Comment mettre en place un simple reCaptcha avec django

L'objectif d'un captcha est de discriminer un visiteur humain d'un robot en mettant en place un test, simple à réaliser pour un humain mais relativement difficile pour une machine. Il existe plusieurs types de captcha, ici on va voir un simple exemple basé sur [reCaptcha](https://www.google.com/recaptcha/intro/android.html) de google. Le guide en anglais [suivant](https://simpleisbetterthancomplex.com/tutorial/2017/02/21/how-to-add-recaptcha-to-django-site.html) est assez complet. La seule dif

Supprimer les éléments d'une liste au dessus d'une valeur donnée sous python

Soit l1 une liste de nombres entiers: >>> import random >>> l1 = random.sample(range(1, 100), 20) >>> print(l1) [21, 78, 35, 53, 45, 96, 65, 68, 12, 89, 66, 67, 42, 37, 17, 18, 22, 28, 80, 90] si on veut supprimer les éléments de la liste dont les valeurs sont plus grande que 50 on peut utiliser les "List Comprehensions" de python en ajoutant une condition, illustration: >>> l2 = [i for i in l1 if i < 50] >>> print(l2) [21, 35, 45, 12, 42, 37, 17, 18, 22, 28] ###

Comment stopper une commande lancée avec subprocess sous python ?

Pour stopper une commande lancée avec subprocess sous python on peut utiliser le module [time](https://docs.python.org/2/library/time.html), exemple stopper un script python après 5 secondes: import subprocess import time command = 'python my_script.py' process = subprocess.Popen(command, shell=True) time.sleep(5) process.terminate() autre exemple avec la commande unix find: import subprocess import time command = 'find ./foo -perm 777' process = subprocess.Popen(command, shell=

Lancer une commande sur une serveur distant avec ssh et pexpect de python

Exemple de code sur comment créer un tunnel ssh et lancer des commandes sur une serveur distant en utilisant [pexpect](https://github.com/pexpect/pexpect/blob/master/doc/overview.rst) de python: import pexpect host = "toto@machine_b.fr" child = pexpect.spawn('ssh toto@machine_b.fr') print('----- password ------') child.expect("password:") child.sendline('my_password') child.expect ('[#\$] ') print('----- command 1 ------') child.sendline('ls -l') child.expect ('[#\$] ') print(c

Comment convertir des octets (bytes) en chaîne de caractères (string) sous python

Simple exemple de comment convertir des octets (bytes) en chaîne de caractères (string) sous python en utilisant la fonction decode("utf-8"): >>> l = b'hello world' >>> l b'hello world' >>> type(l) <class 'bytes'> >>> s = l.decode("utf-8") >>> type(s) <class 'str'> >>> s 'hello world' Peut être utile par exemple avec un tunnel ssh et pexpect qui retourne des résultats de type "bytes" ([voir](/Articles/Lancer-une-commande-sur-une-serveur-distant-avec-ssh

Remplacer dans une matrice les valeurs "inf" avec numpy de python

Exemple de comment remplacer dans une matrice les valeurs inf avec numpy de python from numpy import inf import numpy as np data = np.random.rand(4,4) data[3,1] = inf data[1,2] = inf data[1,0] = -inf print(data) print('---------- replace inf value ----------') data[data == inf] = 0 data[data == -inf] = 0 print(data) donne par exemple [[ 0.71609474 0.4647556 0.4534842 0.58247166] [ -inf 0.16399704 inf 0.50330687] [ 0.25337134 0.48485982 0.45901885

Comment changer la forme d'une figure (aspect ratio) avec imshow de matplotlib ?

Exemple de comment changer la forme d'une figure (aspect ratio) avec imshow de matplotlib: [TOC] Avec matplotlib, quand on utilise imshow et extent on peut parfois obtenir une figure avec une forme ("apect ratio": rapport entre la largeur et la hauteur) non désirée (forme trop allongée par exemple): import numpy as np import matplotlib.pyplot as plt data = np.random.rand(50,1000) plt.imshow(data, extent=[-1,1,-10,10]) plt.savefig("imshow_extent_custum_aspect_ratio_01.png",

Lancer une commande sur une serveur distant avec ssh et subprocess de python

Dans l'objectif d'établir un tunnel ssh sur un serveur distant (machine B) en passant par python (afin de pouvoir automatiser certaines taches par exemple), on peut utiliser [subprocess](https://docs.python.org/2/library/subprocess.html). Le code ci dessous montre comment lancer une commande sur une machine distante B et récupérer le résultat ([source](https://gist.github.com/bortzmeyer/1284249)). Remarque: cependant subprocess n'est peut être pas la meilleure approche pour réaliser cela car i

Réduire une image (créer une thumbnail) avec pillow sous python

Avec python, pour réduire une image (i.e créer une thumbnail), il existe la fonction [thumbnail](http://pillow.readthedocs.io/en/3.1.x/reference/Image.html#PIL.Image.Image.thumbnail) du module pillow, exemple: [image:image-thumbnail-01 size:100 caption:Créer une thumbnail avec pillow sous python size:20] from PIL import Image im = Image.open("Mona-Lisa.JPEG") size = (100,100) im.thumbnail(size) im.save('image_thumbnail_01.jpg') Note: pour changer le rapport entre la largeur et la hau

Changer le rapport entre la largeur et la hauteur d'une image avec pillow de python

Avec python, pour changer le rapport entre la largeur et la hauteur d'une image en peut utiliser la fonction [resize](http://pillow.readthedocs.io/en/3.1.x/reference/Image.html#PIL.Image.Image.resize) du module pillow, exemple: [image:image-resize-test size:100 caption:Changer le rapport entre la largeur et la hauteur d'une image avec pillow de python] from PIL import Image im = Image.open("Mona-Lisa.JPEG") size = (500,500) im = im.resize(size) im.save('image_resize_test.jpg') Note:

Comment passer des arguments en ligne de commande avec python

Supposons un simple script python intitulé my_script.py: #!/usr/bin/env python x = 2 y = 3 print(x+y) que l'on peut executer depuis un terminale avec la commande: python my_script.py donne ici 5. Si on veut maintenant passer des arguments au script python directement dans la ligne commande on peut utiliser la fonction [sys.argv](https://docs.python.org/2/library/sys.html#sys.argv), illustration si on lance la commande: python my_script.py abc def alors #!/usr/bin/env pyth

Django formatter la taille d'un fichier dans un template

Avec django pour formatter la taille d'un fichier dans un template (ie. '13 KB', '4.1 MB', etc), il existe une fonction "built-in" nommée [filesizeformat](https://docs.djangoproject.com/en/2.0/ref/templates/builtins/#filesizeformat): {{ value|filesizeformat }} ou value est la taille en Byte du fichier. Remarque 1: avec python pour obtenir la taille d'un fichier on peut fair comme ceci import os os.path.getsize(''my_file.txt') Remarque 2: on peut aussi obtenir directement la tail

Obtenir et formatter la taille d'un fichier en octet avec python

Pour [rappel](/Articles/Vérifier-la-taille-dun-fichier-en-python/), pour obtenir la taille d'un fichier avec python, on peut faire comme ceci: import os os.path.getsize(''my_file.txt') donne un résultat en Byte: 851528 Si on veut formatter ce résultat pour qu'il soit plus facile à lire, on peut utiliser la fonction suivante ([source](https://stackoverflow.com/questions/5194057/better-way-to-convert-file-sizes-in-python)): import os import math def convert_size(size_bytes):

Comment vérifier si un fichier est un dossier ou un simple fichier texte avec python

Présentation du problème: on dispose d'une liste de fichiers sous le chemin ('/Users/toto/home') obtenue avec la fonction listdir() et on veut savoir si ces fichiers sont des sous dossiers ou bien de simples fichiers texte. Pour cela on peut utiliser [isfile](https://docs.python.org/3/library/os.path.html#os.path.isfile) et [isdir](https://docs.python.org/3/library/os.path.html#os.path.isdir), exemple: import os path_root = '/Users/toto/home' for file in os.listdir(path_root

Vérifier la taille d'un fichier en python ?

Pour verifier la taille d'un fichier en python il existe [os.stat()](https://docs.python.org/2/library/os.html#os.stat) qui comprend la méthode st_size. Exemple avec un fichier nommé ici "MyDoc.pages": >>> import os >>> statinfo = os.stat('MyDoc.pages') >>> statinfo posix.stat_result(st_mode=33188, st_ino=46856586, st_dev=16777218L, st_nlink=1, st_uid=502, st_gid=20, st_size=3834029, st_atime=1401569647, st_mtime=1401485207, st_ctime=1401569632) >>> statinfo.st_size 383

Comment mettre la barre de couleur (colorbar) en dessous avec matplotlib ?

Exemple de comment mettre la barre de couleur (colorbar) en dessous avec matplotlib [TOC] ### Mettre la barre de couleur (colorbar) en dessous de la figure avec matplotlib Avec matplotlib, pour mettre la barre de couleur (colorbar) en dessous de la figure le plus simple est d'utiliser l'argument orientation ="horizontal" dans la fonction matplotlib.pyplot.colorbar() (sources: [1](https://stackoverflow.com/questions/13310594/positioning-the-colorbar) et [2](http://joseph-long.com/writing

Comment installer matplotlib ?

Pour installer matplotlib il est possible de procéder de plusieurs façons. Néanmoins le plus simple est de passer directement par une distribution python car matplotlib est souvent incluses dans les bibliothèques de base (tout comme numpy, scipy, etc). Ces distributions python peuvent être open source, en partie payante ou non, avec ou sans services d'assistance, etc. Une distribution python qui est relativement complète est [anaconda](https://www.anaconda.com/). Il suffit de télécharger sur vot

Modifier la taille des étiquettes sur les axes d'une figure avec matplotlib

Pour modifier (cad augmenter ou diminuer) la taille des étiquettes sur les axes d'une figure, il existe plusieurs possibilités sous matplotlib. Le plus simple simple est d'utiliser les fonctions pyplot intitulées [xticks](https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xticks) ou [yticks](https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.yticks). Par exemple pour modifier la taille des étiquettes sur l'axe des x on peut utiliser la balise suivante: matplotlib.pyplot.