Une des qualités de Python est qu’il accompagne les piles incluses : il possède une bibliothèque standard riche et adaptable qui le rend exceptionnel parmi les autres dialectes de programmation pour la composition de contenus pour la ligne directe. Dans tous les cas, si vous composez des contenus pour la ligne de commande, vous devez également donner une interface de ligne de direction décente, ce que vous pouvez faire avec la bibliothèque Python argparse.

Qu’est-ce qu’une interface de ligne de direction ?

L’interface de ligne de commande (autrement appelée CLI) est un moyen de collaborer avec un contenu de ligne directe. Python accompagne quelques bibliothèques distinctes qui vous permettent de composer une interface de ligne de commande pour vos contenus, cependant, la voie standard pour réaliser une CLI en Python est actuellement la bibliothèque Python argparse.

La bibliothèque Python argparse a été déchargée comme un aspect majeur de la bibliothèque standard avec Python 3.2 le 20 février 2011. Elle a été présentée avec la Python Upgrade Proposition 389 et est actuellement la méthode standard pour faire un CLI en Python, à la fois sous les formes 2.7 et 3.2+.

Ce nouveau module a été déchargé comme un échange pour les modules getopt et optparse plus établis, car ils étaient inadéquats en ce qui concerne certains points importants.

La bibliothèque Python argparse :

$ ls

dcdb_20180201.sg4 mastro35.sg4         ouvertures.sg4

dcdb_20180201.si4 mastro35.si4         ouvertures.si4

dcdb_20180201.sn4 mastro35.sn4         ouvertures.sn4

Permet l’utilisation des arguments de position

Permet la personnalisation du préfixe “burn

Supporte des quantités variables de paramètres pour un choix solitaire

Supporte les sous-commandes (un analyseur de lignes d’ordre fondamental peut utiliser d’autres analyseurs de lignes de direction en se basant sur certaines contentions).

Avant de commencer, vous devez vous rendre compte du fonctionnement d’une interface de ligne de commande. Ouvrez donc un terminal sur votre PC et exécutez l’ordre ls pour obtenir ainsi le récapitulatif des enregistrements contenus dans le présent index :

Comme cela devrait être évident, il y a beaucoup de documents dans le présent catalogue, cependant, la direction n’a pas restauré beaucoup de données sur ces documents.

Heureusement, il n’est pas nécessaire de chercher un autre programme pour avoir un aperçu plus extravagant des documents contenus dans le catalogue des flux. De même, vous n’avez pas à modifier vous-même l’ordre des ls, puisqu’il reçoit une interface de ligne de direction, c’est-à-dire seulement un grand nombre de jetons (appelés contentions) que vous pouvez utiliser pour concevoir la conduite de cette direction.

Tentez actuellement d’exécuter l’ordre ls une fois de plus, mais en ajoutant le choix – l à la ligne de direction comme dans le modèle ci-dessous :

$ ls -l

total 641824

-rw——- 1 dave staff 204558286 5 Mar 2018 dcdb_20180201.sg4

-rw——- 1 dave staff 110588409 5 Mar 2018 dcdb_20180201.si4

-rw——- 1 dave staff 2937516 5 Mar 2018 dcdb_20180201.sn4

-rw——- 1 dave staff 550127 27 mars 2018 mastro35.sg4

-rw——- 1 dave staff 15974 11 Gen 17:01 mastro35.si4

-rw——- 1 dave staff 3636 27 mars 2018 mastro35.sn4

-rw——- 1 dave staff 29128 17 avr 2018 ouvertures.sg4

-rw——- 1 dave staff 276 17 avr 2018 ouvertures.si4

-rw——- 1 dave staff 86 18 avr 2018 ouvertures.sn4

Le rendement est tout à fait différent à ce stade. L’ordre a été restauré une tonne de données sur les consentements, le propriétaire, la collecte et la taille de chaque document et l’occupation totale du registre sur la plaque.

C’est parce que vous avez utilisé l’interface de ligne de commande de la direction ls et déterminé le – l choix qui permet l’arrangement long, une configuration extraordinaire qui profite de beaucoup plus de données pour chaque document enregistré.

Afin de vous familiariser avec ce thème, vous allez passer en revue une tonne d’arguments, de solutions de rechange et de paramètres, nous devrions donc expliquer la formulation immédiatement :

La contestation est une partie solitaire d’une ligne directe, délimitée par des espaces.

Une alternative est un type spécifique de contestation (ou une partie d’une contestation) qui peut modifier le déroulement de la ligne de commande.

Un paramètre est un type spécifique de contestation qui donne des données supplémentaires à un choix ou un ordre solitaire.

Pensez à la direction d’accompagnement :

$ ls – l – s – k/var/log

Dans ce modèle, vous disposez de cinq arguments uniques :

ls : le nom de la direction que vous exécutez

– l : un choix pour donner du pouvoir à la position considérablement dégradée

– s : le choix d’imprimer la taille allouée à chaque enregistrement

– k : le choix d’avoir la taille en kilo-octets

/var/log : un paramètre qui donne des données supplémentaires (la façon d’incliner) à la direction

Notez que, si par hasard vous avez différentes alternatives dans une ligne d’ordre solitaire, à ce moment vous pouvez les rejoindre dans une dispute solitaire comme celle-ci :

$ ls – lsk/var/log

Ici, vous n’avez que trois arguments :

ls : le nom de l’ordre que vous exécutez

– lsk : les trois choix distincts dont vous avez besoin pour vous autonomiser (un mélange de – l, – s, et – k)

/var/log : un paramètre qui donne des données supplémentaires (la façon d’incliner) à l’ordre

Quand utiliser une interface de ligne de direction

Puisque vous comprenez ce qu’est une interface de ligne de direction, vous vous demandez peut-être quand il est judicieux d’en réaliser une dans vos projets. La ligne directrice générale est que, dans le cas où vous avez besoin de donner un moyen facile à utiliser pour concevoir votre programme, vous devriez alors envisager une interface de ligne de direction, et la méthode standard pour le faire est d’utiliser la bibliothèque Python argparse.

Que vous réalisiez un programme de ligne de commande complexe qui nécessite un enregistrement d’arrangement pour fonctionner, dans le cas où vous devez donner à votre client une chance d’indiquer quel document de conception utiliser, il est judicieux de reconnaître cette incitation en réalisant une interface de ligne directe avec la bibliothèque Python argparse.

La méthode la plus efficace pour utiliser la bibliothèque Python argparse pour réaliser une interface de ligne de direction

L’utilisation de la bibliothèque Python argparse se fait en quatre étapes :

Importer la bibliothèque Python argparse

Faire l’analyseur

Ajouter des arguments discrétionnaires et positionnels à l’analyseur

Exécuter .parse_args()

Après avoir exécuté .parse_args(), vous obtenez un objet de l’espace de nommage qui contient une propriété simple pour chaque information obtenue de la ligne de direction.

Pour voir ces quatre étapes en détail avec une maquette, imaginons que vous réalisiez un programme nommé myls.py qui répertorie les notices contenues dans le présent catalogue. Voici une utilisation potentielle de votre interface de ligne de commande sans utiliser la bibliothèque Python argparse :

# myls.py

import os

système d’importation

si len(sys.argv) > 2 :

    print(“Vous avez spécifié trop d’arguments”)

    sys.exit()

si len(sys.argv) < 2 :

    print(“Vous devez préciser le chemin d’accès à répertorier”)

    sys.exit()

input_path = sys.argv [1]

sinon os.path.isdir(input_path) :

    print(“Le chemin spécifié n’existe pas”)

    sys.exit()

print(‘\n’.join(os.listdir(input_path))

C’est une implémentation possible de l’interface en ligne de commande de votre programme qui n’utilise pas la bibliothèque Python argparse, mais si vous essayez de l’exécuter, vous verrez qu’elle fonctionne :

python myls.py

Vous devez préciser le chemin à suivre

python myls.py /mnt /proc /dev

Vous avez spécifié trop d’arguments

python myls.py /mnt

dir1

dir2

Comme vous pouvez le voir, le script fonctionne, mais le résultat est très différent de celui que vous attendez d’une commande intégrée standard.

Voyons maintenant comment la bibliothèque Python argparse peut améliorer ce code :

# myls.py

# Importer la bibliothèque argparse

import argparse

import os

système d’importation

# Créer l’analyseur

my_parser = argparse.ArgumentParser(description=”Lister le contenu d’un dossier”)

# Ajouter les arguments

my_parser.add_argument(‘Path’,

                       metavar=’chemin’,

                       type=str,

                       help=’the path to list’)

# Exécutez la méthode parse_args()

args = my_parser.parse_args()

input_path = args.Path

sinon os.path.isdir(input_path) :

    print(“Le chemin spécifié n’existe pas”)

    sys.exit()

print(‘\n’.join(os.listdir(input_path))

Le code a beaucoup changé avec l’introduction de la bibliothèque Python argparse.