J'ai un script Python avec une docstring. Lorsque l'analyse des arguments de la ligne de commande échoue, je veux imprimer la docstring pour les informations de l'utilisateur.
Est-ce qu'il y a un moyen de faire ça?
#!/usr/bin/env python
"""
Usage: script.py
This describes the script.
"""
import sys
if len(sys.argv) < 2:
print("<here comes the docstring>")
La docstring est stockée dans le module global __doc__
Du module.
print(__doc__)
Soit dit en passant, cela vaut pour n'importe quel module: import sys; print(sys.__doc__)
. Les docstrings de fonctions et de classes se trouvent également dans leur attribut __doc__
.
Voici une alternative qui ne code pas en dur le nom de fichier du script, mais utilise à la place sys.argv [0] pour l'imprimer. L'utilisation de% (scriptName) s au lieu de% s améliore la lisibilité du code.
#!/usr/bin/env python
"""
Usage: %(scriptName)s
This describes the script.
"""
import sys
if len(sys.argv) < 2:
print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}
sys.exit(0)
L'analyse des arguments doit toujours être effectuée avec argparse
.
Vous pouvez afficher le __doc__
chaîne en la passant au paramètre description
d'Argparse:
#!/usr/bin/env python
"""
This describes the script.
"""
if __== '__main__':
from argparse import ArgumentParser
parser = ArgumentParser(description=__doc__)
# Add your arguments here
parser.add_argument("-f", "--file", dest="myFilenameVariable",
required=True,
help="write report to FILE", metavar="FILE")
args = parser.parse_args()
print(args.myFilenameVariable)
Si vous appelez ceci mysuperscript.py et l'exécutez, vous obtenez:
$ ./mysuperscript.py --help
usage: mysuperscript.py [-h] -f FILE
This describes the script.
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE write report to FILE
J'ai eu un tel problème, j'ai parcouru le Web et j'ai heureusement trouvé la réponse, appris le module sys
et créé un script en Python, le voici
if __name__=='__main__':
if len(sys.argv)==2 and sys.argv[1]=='--help':
print(__doc__)
en tappant ./yourscriptname.py --help
ou python3 yourscriptname.py --help
il affichera votre docstring