¿Cómo puedo imprimir la cadena de documentos de un archivo de Python al ejecutarlo?

Tengo un script en Python con un docstring. Cuando el análisis de los argumentos de la línea de comando no tiene éxito, quiero imprimir la cadena de documentos para la información del usuario.

¿Hay alguna manera de hacer esto?

Ejemplo minimo

#!/usr/bin/env python """ Usage: script.py This describes the script. """ import sys if len(sys.argv) < 2: print("") 

La cadena de documentos se almacena en el __doc__ global del módulo.

 print(__doc__) 

Por cierto, esto se aplica a cualquier módulo: import sys; print(sys.__doc__) import sys; print(sys.__doc__) . Docstrings de funciones y clases también están en su atributo __doc__ .

Aquí hay una alternativa que no codifica el nombre de archivo del script, sino que utiliza sys.argv [0] para imprimirlo. El uso de% (scriptName) s en lugar de% s mejora la legibilidad del código.

 #!/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) 

El análisis de argumentos siempre debe hacerse con argparse .

Puede mostrar la cadena __doc__ pasándola al parámetro de description de Argparse:

 #!/usr/bin/env python """ This describes the script. """ if __name__ == '__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 llama a este mysuperscript.py y lo ejecuta, obtendrá:

 $ ./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 

Me encontré con un problema, recorrí la web y, afortunadamente, encontré la respuesta, aprendí el módulo sys y creé un script en Python . Aquí está.

 if __name__=='__main__': if len(sys.argv)==2 and sys.argv[1]=='--help': print(__doc__) 

escribiendo ./yourscriptname.py --help o python3 yourscriptname.py --help mostrará su cadena de documentos