Publicité
Click est un package Python pour l'écriture d'interfaces de ligne de commande. Il produit une belle documentation pour vous et vous permet de créer des interfaces de ligne de commande en une seule ligne de code. En bref: c'est génial et peut aider à faire passer vos programmes 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'efforts et beaucoup plus de code. Vous devez analyser les arguments de ligne de commande, effectuer la validation, développer une logique pour gérer différents arguments et créer un menu d'aide personnalisé. Vous souhaitez ajouter une nouvelle option? Vous allez alors modifier votre fonction d'aide.
Il n'y a rien de mal à écrire votre propre code, et cela est un excellent moyen d'apprendre Python, mais Click vous permet de suivre les principes «Ne vous répétez pas» (DRY). Sans Click, vous écrirez du code fragile et nécessitant beaucoup de maintenance à chaque changement.
Voici une interface de ligne de commande simple codée sans clic:
importer sys. import random def do_work (): Fonction pour gérer l'utilisation de la ligne de commande args = sys.argv args = args [1:] # Le premier élément d'args est le nom du fichier si len (args) == 0: print ('Vous n'avez passé aucune commande dans!') else: pour a in args: if a == '--help': print ('Basic command line program') print ('Options:') print ('- -aide -> afficher ce menu d'aide de base. ') print (' --monty -> afficher une citation Monty Python. ') print (' --veg -> afficher un légume aléatoire ') elif a ==' --monty ': print (' Qu'est-ce que c'est ça, puis? "Romanes eunt domus"? Les gens s'appelaient Romanes, ils vont, la maison? ') Elif a ==' --veg ': print (random.choice ([' Carrot ',' Potato ',' Turnip '])) else: print (' Argument non reconnu. ') si __name__ ==' __main__ ': do_work ()
Ces 27 lignes de Python fonctionnent bien mais sont très fragiles. Toute modification apportée à votre programme aura besoin de beaucoup d'autres codes de support pour changer. Si vous modifiez un nom d'argument, vous devrez mettre à jour les informations d'aide. Ce code peut facilement devenir incontrôlable.
Voici la même logique avec Click:
cliquez sur importer. importer random @ click.command () @ click.option ('- monty', default = False, help = 'Afficher une citation Monty Python.') @ click.option ('- veg', default = False, help = 'Afficher un légume aléatoire.') def do_work (monty, veg): l'exemple de clic de base suivra vos commandes si monty: print ('Qu'est-ce que c'est, alors? "Romanes eunt domus"? Les gens appelaient Romanes, ils vont, la maison? ') If veg: print (random.choice ([' Carrot ',' Potato ',' Turnip '])) if __name__ ==' __main__ ': do_work ()
Cet exemple Click 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 montre combien de temps et d'efforts vous pouvez économiser en utilisant des programmes tels que Click. Bien que l'interface de ligne de commande puisse sembler la même à l'utilisateur final, le code sous-jacent est plus simple et vous économiserez beaucoup de temps de codage. Toute modification ou mise à jour que vous écrirez à l'avenir entraînera également une augmentation significative du temps de développement.
Premiers pas avec Click for Python
Avant d'utiliser Click, vous pouvez souhaiter configurer un environnement virtuel Apprenez à utiliser l'environnement virtuel PythonQue vous soyez un développeur Python expérimenté ou que vous débutiez, 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 d'autres projets sur lesquels vous travaillez. Vous pourriez aussi essayez Python dans votre navigateur Essayez Python dans votre navigateur avec ces shells interactifs en ligne gratuitsQue vous parcouriez ces exemples Python ou que vous passiez en revue les bases des tableaux et des listes, vous pouvez tester le code directement dans votre navigateur. Voici les meilleurs interprètes Python en ligne que nous ayons trouvés. Lire la suite si vous voulez jouer avec Python et Click.
Enfin, assurez-vous que vous exécutez Python version 3. Il est possible d'utiliser Click avec Python version 2, mais ces exemples sont en Python 3. En savoir plus sur le différences entre Python 2 et Python 3.
Une fois prêt, installez Click à partir de la ligne de commande à l'aide de PIP (comment installer PIP pour Python):
clic d'installation de pip
Écrire votre programme First Click
Dans un éditeur de texte, commencez par importer Click:
importer un clic
Une fois importé, créez un méthode et un principale point d'accès. Notre Guide POP de Python les couvre plus en détail, mais ils fournissent un endroit pour stocker votre code et un moyen pour Python de commencer à l'exécuter:
cliquez sur importer. import random def veg (): La méthode de base retournera une impression végétale aléatoire (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])) 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 à combiner avec Click.
Enregistrez-le 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 aléatoire. Améliorons les choses en ajoutant Click. Modifiez 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 à produire.') def veg (total): La méthode de base renvoie un légume aléatoire pour le nombre dans la plage (total): print (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])) if __name__ == '__main__': veg ()
Lors de l'exécution, vous verrez un légume aléatoire affiché trois fois.
Décomposons ces changements. le @ click.command () décorateur configure Cliquez pour utiliser la fonction immédiatement après 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 le décorateur configure le clic pour accepter les paramètres de la ligne de commande, qu'il transmettra à votre méthode. Trois arguments sont utilisés ici:
- -total: Il s'agit du nom de ligne de commande du total argument.
- 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.
- Aidez-moi: Une courte phrase expliquant comment utiliser votre programme.
Voyons le clic en action. À partir de la ligne de commande, exécutez votre script, mais passez le total argument comme celui-ci:
python click_example.py - total 10
En définissant –Total 10 à partir de la ligne de commande, votre script imprimera dix légumes aléatoires.
Si vous passez dans le -Aidez-moi indicateur, vous verrez une belle page d'aide, avec les options que vous pouvez utiliser:
python click_example.py --help
Ajout de commandes supplémentaires
Il est possible d'utiliser plusieurs décorateurs Click sur la même fonction. Ajoutez une autre option de clic au veg une fonction:
@ click.option ('- sauce', default = False, help = 'Ajouter "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 refactorisations mineures pour la netteté):
cliquez sur importer. importer random @ click.command () @ click.option ('- sauce', default = False, help = 'Ajouter "avec sauce" aux légumes.') @ click.option ('- total', par défaut = 3, help = 'Nombre de légumes à produire.') def veg (total, sauce): La méthode de base renvoie un légume aléatoire pour le nombre dans la plage (total): choice = random.choice (['Carotte', 'Pomme de terre', 'Navet', 'Panais']) si sauce: print (f '{choix} avec sauce') else: print (choix) si __name__ == '__main__': veg ()
Encore plus d'options de clic
Une fois que vous connaissez les bases, vous pouvez commencer à regarder des options de clic plus complexes. Dans cet exemple, vous allez apprendre à passer plusieurs valeurs à un seul argument, que Click convertira en tuple. Vous pouvez en savoir plus sur les tuples 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:
cliquez sur importer. importer random @ click.command () def add (): La méthode de base additionnera deux nombres ensemble. passer 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 ('- nombres', nargs = 2, type = int, help = 'Ajoutez deux nombres ensemble.')
Le seul nouveau code ici est le nargs = 2, et le type = int les options. Cela indique à Click d'accepter deux valeurs pour le Nombres et qu'ils doivent tous deux être de type entier. Vous pouvez le changer en n'importe quel nombre ou type de données (valide) que vous aimez.
Enfin, changez le ajouter méthode pour accepter la Nombres et faites un traitement avec eux:
def add (nombres): La méthode de base ajoutera deux nombres ensemble. result = nombres [0] + nombres [1] print (f '{nombres [0]} + {nombres [1]} = {result}')
Chaque valeur que vous transmettez est accessible via le Nombres objet. Voici comment l'utiliser dans la ligne de commande:
python click_example_2.py --nombre 1 2
Cliquez sur Est 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 que vous pouvez découvrir maintenant que vous avez une bonne compréhension des bases.
Si vous cherchez des projets Python pour pratiquer vos nouvelles compétences, pourquoi ne pas apprendre comment contrôler un Arduino avec Python Comment programmer et contrôler un Arduino avec PythonMalheureusement, il est impossible de programmer directement un Arduino en Python, mais vous pouvez le contrôler via USB à l'aide d'un programme Python. Voici comment. Lire la suite ou que diriez-vous lire et écrire dans Google Sheets avec Python Comment lire et écrire dans des feuilles Google avec PythonPython 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 Click!
Joe est diplômé en informatique de l'Université de Lincoln, au Royaume-Uni. C'est un développeur de logiciels professionnel, et lorsqu'il ne pilote pas de drones ou n'écrit pas de musique, il peut souvent être trouvé en train de prendre des photos ou de produire des vidéos.