Écriture et exécution d’un script¶
Le style¶
Commenter¶
Commenter son code est essentiel. Cela permettra aux personnes liront le code de mieux le comprendre (pour le modifier par exemple) et cela permettra aussi à l’auteur du code de se rappeler plus rapidement des spécificités de celui-ci. Commenter son code c’est donc avant tout se rendre service pour éviter de perdre du temps plus tard.
Ainsi lorsqu’on écrit un script, la première chose à faire est
de le commenter, avant même l’écriture d’une seule ligne de vrai code.
On pourrait rajouter au début de chaque script qu’on écrit la docstring
suivante:
"""Une courte phrase qui dit ce que le script va faire.
Ici, on précise les choses, en détaillant la logique
du script, et l'utilisation qu'on imagine en faire.
Utilisation: Décrire comment utiliser le script.
Références: On peut rajouter ici des références utiles
(liens internet par exemple).
Dépendances: La version de Python et les dépendances
sur lesquelles le script va s'appuyer.
exemple: python 3.7, pandas 0.25
Historique:
- nom (date): création du script
"""
Écrire un script¶
Un script Python est un simple fichier texte dont
l’extension est .py
. Par exemple, le fichier
parsefile.py
est un script Python.
Pour écrire du code dans un script Python, on peut utiliser un éditeur de texte simple comme Notepad. Des éditeurs plus évolués comme Notepad++ permettent de changer la couleur du texte en fonction de ce qu’il représente. On utilisera Spyder qui est un logiciel dédié à l’écriture du code en Python.
Exécuter un script¶
Depuis Spyder¶
On peut ouvrir un script Python dans Spyder puis l’exécuter:
- Ligne par ligne avec la touche
F9
, - Une sélection spécifique (une partie d’une ligne, plusieurs lignes, etc.) avec la touche
F9
, - Une cellule encadrée par le symbole
# %%
avec la combinaisonCtrl + Entrée
, - Entièrement avec la touche
F5
ou en cliquant sur la flèche verte.
Depuis l’Anaconda Prompt¶
Il faut ouvrir la console Anaconda Prompt et s’assurer que l’on se trouve bien dans un environnement conda permettant d’exécuter le script. On activera l’environnement avec:
La commande suivante va exécuter le code contenu dans le fichier parsefile.py
avec la version de Python
installée dans l’environnement parser_env. Il faudra que les dépendances du script (pandas par exemple)
soient installées au préalable dans l’environnement (conda install pandas
).
Si le fichier contient des données d’entrée à adapter suivant son application, on peut hard-coder ces données, c’est-à-dire, on les écrit directement dans le script.
Le contenu du script pourrait ressembler à cela:
####### INPUT DATA #########
INPUTFILE = "inputfile.txt"
############################
do_something(INPUTFILE)
On peut aussi passer des arguments à la commande d’exécution
du script avec, par exemple, la commande
python parsefile.py inputfile.txt
. Ici, inputfile.txt
est un argument
supplémentaire qui sera utilisé par le script parsefile.py
. On peut récupérer
ce genre d’argument directement depuis le code avec le module sys
et son
attribut argv
. Cet attribut est une list
, son
deuxième élément contiendra "inputfile.txt"
.
Le contenu de ce script pourrait ressembler à cela:
import sys
# Lecture de l'argument passé à la ligne de commande
inputfile = sys.argv[1]
do_something(inputfile)
Depuis un fichier batch¶
L’exemple ci-dessous montre comment adapter un fichier batch (extension en .bat) pour qu’il active un environnement conda, exécute un script Python et désactive conda.
Une fois adapté (chemin vers le dossier d’installation de Miniconda, nom de l’environnement à activer et chemin du script à exécuter), on peut enregistrer ce fichier batch et l’exécuter directement depuis la Command Prompt (il n’est pas nécessaire de l’exécuter depuis l”Anaconda Prompt).
@echo off
rem Chemin ver le dossier racine de Miniconda
set CONDAPATH=C:\path\to\Miniconda
rem Nom de l'environnement à activer (e.g. gis, datascience, etc.)
set ENVNAME=parsefile_env
call %CONDAPATH%\Scripts\activate.bat %CONDAPATH%\envs\%ENVNAME%
python parsefile.py
call conda deactivate
rem Désactive l'environnement base
call conda deactivate