Python LanguageLlama a Python desde C #


Introducción

La documentación proporciona una implementación de muestra de la comunicación entre procesos entre C # y los scripts de Python.

Observaciones

Tenga en cuenta que en el ejemplo anterior, los datos se serializan utilizando la biblioteca MongoDB.Bson que se puede instalar a través del administrador NuGet.

De lo contrario, puede utilizar cualquier biblioteca de serialización JSON de su elección.


A continuación se presentan los pasos de implementación de la comunicación entre procesos:

  • Los argumentos de entrada se serializan en una cadena JSON y se guardan en un archivo de texto temporal:

     BsonDocument argsBson = BsonDocument.Parse("{ 'x' : '1', 'y' : '2' }"); 
     string argsFile = string.Format("{0}\\{1}.txt", Path.GetDirectoryName(pyScriptPath), Guid.NewGuid());
    
  • Python interpreter python.exe ejecuta la secuencia de comandos de python que lee la cadena JSON desde un archivo de texto temporal y los argumentos de entrada de retroceso:

     filename = sys.argv[ 1 ]
     with open( filename ) as data_file:  
        input_args = json.loads( data_file.read() )
    
     x, y = [ float(input_args.get( key )) for key in [ 'x', 'y' ] ]
    
  • El script de Python se ejecuta y el diccionario de salida se serializa en una cadena JSON y se imprime en la ventana de comandos:

     print json.dumps( { 'sum' : x + y , 'subtract' : x - y } )
    

    introduzca la descripción de la imagen aquí

  • Lea la cadena JSON de salida de la aplicación C #:

     using (StreamReader myStreamReader = process.StandardOutput)
     {
        outputString = myStreamReader.ReadLine();
        process.WaitForExit();
     }
    

introduzca la descripción de la imagen aquí

Estoy utilizando la comunicación entre procesos entre C # y los scripts de Python en uno de mis proyectos que permite llamar a los scripts de Python directamente desde hojas de cálculo de Excel.

El proyecto utiliza el complemento ExcelDNA para C # - enlace Excel.

El código fuente se almacena en el repositorio de GitHub.

A continuación se encuentran enlaces a páginas wiki que brindan una descripción general del proyecto y ayudan a comenzar en 4 sencillos pasos .

Espero que encuentre útil el ejemplo y el proyecto.


Llama a Python desde C # Ejemplos relacionados