La mejor manera de devolver un valor desde un script de python

Escribí un script en Python que toma algunos archivos, ejecuta algunas pruebas y cuenta la cantidad de total_bugs mientras escribía archivos nuevos con información para cada uno (errores + más).

Para tomar un par de archivos del directorio de trabajo actual:

myscript.py -i input_name1 input_name2

Cuando termine ese trabajo, me gustaría que el script ‘devuelva total_bugs’, pero no estoy seguro de cuál es la mejor manera de implementar esto.

Actualmente, el script imprime cosas como:

    [working directory] [files being opened] [completed work for file a + num_of_bugs_for_a] [completed work for file b + num_of_bugs_for_b] ... [work complete] 

    Un poco de ayuda (notas / consejos / ejemplos de código) podría ser útil aquí.

    Por cierto, esto necesita trabajar para Windows y Unix.

    Si desea que su secuencia de comandos devuelva valores, simplemente return [1,2,3] desde una función que envuelve su código, pero luego tendrá que importar su secuencia de comandos de otra secuencia de comandos para incluso tener algún uso para esa información:

    Valores de retorno (de una función de envoltura)

    (una vez más, esto debería ser ejecutado por una secuencia de comandos de Python e importarse para hacer algo bueno):

     import ... def main(): # calculate stuff return [1,2,3] 

    Códigos de salida como indicadores.

    (Esto generalmente es bueno cuando se quiere indicar a un gobernador qué fue lo que salió mal o simplemente el número de errores / filas contados o w / e. Normalmente 0 es una buena salida y> = 1 es una mala salida, pero podría interrumpirse). -práctelos de la forma que desee para obtener datos de ella)

     import sys # calculate and stuff sys.exit(100) 

    Y salga con un código de salida específico dependiendo de lo que quiera que le diga a su gobernador. Utilicé códigos de salida cuando ejecuté el script en un entorno de progtwigción y supervisión para indicar lo que sucedió.

    Stdout como su relé

    Si no, tendrías que usar stdout para comunicarte con el mundo exterior (como has descrito). Pero, en general, es una mala idea, a menos que sea un analizador que ejecute su script y pueda detectar cualquier cosa a la que le esté informando.

     import sys # calculate stuff sys.stdout.write('Bugs: 5|Other: 10\n') sys.stdout.flush() sys.exit(0) 

    ¿Está ejecutando su secuencia de comandos en un entorno de progtwigción controlado, entonces los códigos de salida son la mejor manera de hacerlo?

    Archivos como transportadores

    También existe la opción de simplemente escribir información en un archivo y almacenar el resultado allí.

     # calculate with open('finish.txt', 'wb') as fh: fh.write(str(5)+'\n') 

    Y recoger el valor / resultado de allí. Incluso podría hacerlo en un formato CSV para que otros lo lean de manera simplista.