Comment créer vos propres programmes en ligne de commande en Python avec Click

Comment créer vos propres programmes en ligne de commande en Python avec Click / La programmation

Click est un package Python permettant d'écrire des interfaces de ligne de commande. Il produit une belle documentation pour vous et vous permet de construire des interfaces de ligne de commande en une seule ligne de code. En bref: c'est génial et peut aider vos programmes à passer au niveau supérieur.

Voici comment vous pouvez l'utiliser pour animer vos projets Python.

Écriture de programmes en ligne de commande sans clic

Il est possible d'écrire des programmes en ligne de commande sans utiliser Click, mais cela nécessite plus d'effort et beaucoup plus de code. Vous devez analyser les arguments de ligne de commande, effectuer une validation, développer une logique pour gérer différents arguments et créer un menu d'aide personnalisé. Voulez-vous ajouter une nouvelle option? Vous allez modifier votre fonction d'aide alors.

Il n’ya rien de mal à écrire votre propre code, et le faire est un excellent moyen d’apprendre Python, mais Click vous permet de suivre les étapes suivantes. “Ne te répète pas” (SEC) principes. Sans Click, vous écrivez un code fragile, qui nécessite beaucoup de maintenance chaque fois que des changements se produisent..

Voici une interface simple en ligne de commande codée sans Click:

import sys import random def do_work (): "" "Fonction permettant de gérer l'utilisation de la ligne de commande" "" args = sys.argv args = args [1:] # Le premier élément de args est le nom du fichier si len (args) == 0 : print ('Vous n'avez passé aucune commande!') else: for a in args: if a == '--help': print ('Programme de ligne de commande de base') print ('Options:') print (' --help -> affiche ce menu d'aide de base. ') print (' --monty -> affiche une citation en Monty Python. ') print (' --veg -> affiche un légume aléatoire ') elif a ==' - monty ': print (' Qu'est-ce que c'est, alors? "Romanes eunt domus"? Les gens appelés Romanes, ils vont, la maison? ') elif a ==' --veg ': print (random.choice ([' Carotte ',' Pomme de terre ',' Navet '])) else: print (' Argument non reconnu. ') If __name__ ==' __main__ ': do_work ()

Ces 27 lignes de Python fonctionnent bien mais sont très fragiles. Toute modification apportée à votre programme nécessitera de nombreux autres codes de support. Si vous modifiez un nom d'argument, vous devez mettre à jour les informations d'aide. Ce code peut facilement devenir incontrôlable.

Voici la même logique avec Click:

importation clic importation aléatoire @ click.command () @ click.option ('- monty', default = False, help = "Afficher une citation de Monty Python.") @ click.option ('- veg', default = False , help = "Afficher un légume aléatoire.") def do_work (monty, veg): "" "Un exemple de clic de base suivra vos commandes" "" si monty: print ('Qu'est-ce que c'est, alors? "Romanes eunt domus "? Les gens ont appelé Romanes, ils vont, la maison? ') Si veg: print (random.choice ([' Carrot ',' Potot ',' Potato ',' Turnip ']))) si __name__ ==' __main__ ': do_work ()

Cet exemple de clic implémente la même logique dans 16 lignes de code. Les arguments sont analysés pour vous et l'écran d'aide est généré:

Cette comparaison de base indique le temps et les efforts que vous pouvez économiser en utilisant des programmes tels que Click. Bien que l'interface de ligne de commande puisse sembler identique à l'utilisateur final, le code sous-jacent est plus simple et vous permettra de gagner beaucoup de temps. Toute modification ou mise à jour que vous rédigerez à l'avenir entraînera également une augmentation significative du temps de développement.

Débuter avec Click for Python

Avant d’utiliser Click, vous voudrez peut-être configurer un environnement virtuel. Apprenez à utiliser l’environnement virtuel Python. Apprenez à utiliser l’environnement virtuel Python. Que vous soyez un développeur Python expérimenté ou que vous commenciez à apprendre à configurer un environnement virtuel. est essentiel pour tout projet Python. Lire la suite . Cela empêchera vos packages Python d'entrer en conflit avec votre système Python ou avec d'autres projets sur lesquels vous pouvez travailler. Vous pouvez également essayer Python dans votre navigateur Essayez Python dans votre navigateur avec ces shells interactifs en ligne gratuits Essayez Python dans votre navigateur avec ces shells interactifs en ligne gratuits Que vous passiez en revue ces exemples Python ou examiniez les bases des tableaux et listes, vous pouvez Testez le code directement dans votre navigateur. Voici les meilleurs interprètes en ligne Python que nous avons trouvés. Lisez plus si vous voulez jouer avec Python et Click.

Enfin, assurez-vous d’exécuter Python version 3. Il est possible d’utiliser Click avec Python version 2, mais ces exemples se trouvent dans Python 3. Pour en savoir plus sur les différences entre Python 2 et Python 3.

Une fois prêt, installez Click à partir de la ligne de commande en utilisant PIP (comment installer PIP pour Python):

pip installer clic

Écrire votre programme de premier clic

Dans un éditeur de texte, commencez par importer Click:

clic d'importation

Une fois importé, créez un méthode et un principale point d'accès. Notre guide de programmation orientée objet Python les décrit plus en détail, mais ils fournissent un emplacement pour stocker votre code et un moyen pour Python de commencer à l'exécuter:

importation clic importation aléatoire veg (): "" "La méthode de base renvoie un légume aléatoire" "" print (random.choice (['Carrot', 'Potato', 'Navet', 'Panais'])) if __name__ = = '__main__': veg ()

Ce script très simple produira un légume aléatoire. Votre code peut sembler différent, mais cet exemple simple est parfait pour combiner avec Click.

Enregistrer ceci sous click_example.py, puis exécutez-le dans la ligne de commande (après avoir accédé à son emplacement):

python click_example.py

Vous devriez voir un nom de légume au hasard. Améliorons les choses en ajoutant Click. Changez votre code pour inclure les décorateurs Click et un pour boucle:

@ click.command () @ click.option ('- total', par défaut = 3, help = "Nombre de légumes à afficher.") def veg (total): "" "La méthode de base renvoie un légume aléatoire" " "pour un nombre dans la plage (total): print (random.choice (['Carrot', 'Pomme de terre', 'Pomme de terre', 'Navet', 'Panais'])) si __name__ == '__main__': veg ()

En cours d'exécution, vous verrez un légume aléatoire affiché trois fois.

Décomposons ces changements. le @ click.command () Le décorateur configure Cliquez pour utiliser la fonction qui suit immédiatement le décorateur. Dans ce cas, c’est le veg () une fonction. Vous en aurez besoin pour chaque méthode que vous souhaitez utiliser avec Click..

le @ click.option decorator configure click pour accepter les paramètres de la ligne de commande, qu'il transmettra à votre méthode. Il y a trois arguments utilisés ici:

  1. -total: Ceci est le nom de la ligne de commande pour le total argument.
  2. défaut: Si vous ne spécifiez pas l'argument total lors de l'utilisation de votre script, Click utilisera la valeur par défaut..
  3. Aidez-moi: Une courte phrase expliquant comment utiliser votre programme.

Voyons Click en action. A partir de la ligne de commande, lancez votre script, mais transmettez le total argument comme ceci:

python click_example.py --total 10

En mettant -total 10 à partir de la ligne de commande, votre script imprimera dix légumes au hasard.

Si vous passez dans le -Aidez-moi drapeau, vous verrez une belle page d’aide, avec les options que vous pouvez utiliser:

python click_example.py --help

Ajouter plus de commandes

Il est possible d'utiliser plusieurs décorateurs de clic sur la même fonction. Ajouter une autre option de clic à la veg une fonction:

@ click.option ('- sauce', default = False, help = "Append" avec sauce "aux légumes.")

N'oubliez pas de passer ceci dans la méthode:

def veg (total, sauce):

Maintenant, lorsque vous exécutez votre fichier, vous pouvez passer le sauce drapeau:

python click_example.py --gravy y

L'écran d'aide a également changé:

Voici le code entier (avec quelques modifications mineures pour la propreté):

importation clic importation aléatoire @ click.command () @ click.option ('- sauce', default = False, help = "Append" avec sauce "aux légumes.") @ click.option ('- total', default = 3, help = "Nombre de légumes à produire.") def veg (total, sauce): "" "La méthode de base renvoie un légume aléatoire" "" pour un nombre compris dans la plage (total): choice = random.choice ( ['Carotte', 'Pomme de terre', 'Navet', 'Panais']) si sauce: print (f 'choix avec sauce') sinon: print (choix) si __name__ == '__main__': veg ()

Encore plus d'options de clic

Une fois que vous connaissez les bases, vous pouvez commencer à examiner des options de clic plus complexes. Dans cet exemple, vous apprendrez à transmettre plusieurs valeurs à un seul argument, que Click convertira en un tuple. Vous pouvez en apprendre plus sur les n-uplets dans notre guide du dictionnaire Python.

Créez un nouveau fichier appelé click_example_2.py. Voici le code de démarrage dont vous avez besoin:

importation clic importation aléatoire @ click.command () def add (): "" "La méthode de base ajoute deux nombres." "" passe si __name__ == '__main__': add ()

Il n'y a rien de nouveau ici. La section précédente explique ce code en détail. Ajouter un @ click.option appelé Nombres:

@ click.option ('- numbers', nargs = 2, tapez = int, help = "Ajoutez deux nombres ensemble.")

Le seul nouveau code ici sont les nargues = 2, et le type = int options. Ceci indique à Click d'accepter deux valeurs pour le Nombres option, et qu'ils doivent tous deux être de type entier. Vous pouvez changer cela en n'importe quel nombre ou type de données (valide) que vous aimez.

Enfin, changez le ajouter méthode pour accepter le Nombres argument, et faire un traitement avec eux:

def add (numbers): "" "La méthode de base additionnera deux nombres." "" result = numbers [0] + numbers [1] print (f 'numbers [0] + numbers [1] =  résultat')

Chaque valeur que vous transmettez est accessible via la Nombres objet. Voici comment l'utiliser en ligne de commande:

python click_example_2.py --numbers 1 2

Cliquez sur la solution pour les utilitaires Python

Comme vous l'avez vu, Click est facile à utiliser mais très puissant. Bien que ces exemples ne couvrent que les bases de Click, il existe de nombreuses autres fonctionnalités sur lesquelles vous pouvez en apprendre davantage maintenant que vous maîtrisez parfaitement les bases..

Si vous recherchez des projets Python avec lesquels vous pourrez exercer vos nouvelles compétences, pourquoi ne pas apprendre à contrôler un Arduino avec Python Comment programmer et contrôler un Arduino avec Python Comment programmer et contrôler un Arduino avec Python Malheureusement, c'est impossible pour programmer directement un Arduino en Python, mais vous pouvez le contrôler via USB en utilisant un programme Python. Voici comment. En savoir plus ou comment lire et écrire dans Google Sheets avec Python Comment lire et écrire dans Google Sheets avec Python Comment lire et écrire dans Google Sheets avec Python Python peut sembler étrange et inhabituel, mais il est facile à apprendre et à utiliser. Dans cet article, je vais vous montrer comment lire et écrire dans Google Sheets à l'aide de Python. Lire la suite ? L'un ou l'autre de ces projets serait parfait pour la conversion en clic!

Explorez plus sur: Tutoriels de codage, Python.