Python LanguageChiama Python da C #


introduzione

La documentazione fornisce un'implementazione esemplificativa della comunicazione tra processi tra C # e gli script Python.

Osservazioni

Si noti che nell'esempio sopra i dati sono serializzati usando la libreria MongoDB.Bson che può essere installata tramite il gestore di NuGet.

Altrimenti, puoi usare qualsiasi libreria di serializzazione JSON a tua scelta.


Di seguito sono riportati i passaggi di implementazione della comunicazione tra processi:

  • Gli argomenti di input sono serializzati nella stringa JSON e salvati in un file di testo temporaneo:

     BsonDocument argsBson = BsonDocument.Parse("{ 'x' : '1', 'y' : '2' }"); 
     string argsFile = string.Format("{0}\\{1}.txt", Path.GetDirectoryName(pyScriptPath), Guid.NewGuid());
    
  • Python interpreter python.exe esegue lo script python che legge la stringa JSON da un file di testo temporaneo e gli argomenti di input backs-out:

     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' ] ]
    
  • Lo script Python viene eseguito e il dizionario di output viene serializzato nella stringa JSON e stampato nella finestra di comando:

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

    inserisci la descrizione dell'immagine qui

  • Leggi la stringa JSON di output dall'applicazione C #:

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

inserisci la descrizione dell'immagine qui

Sto utilizzando la comunicazione tra processi C # e gli script Python in uno dei miei progetti che consente di chiamare gli script Python direttamente dai fogli di calcolo di Excel.

Il progetto utilizza il componente aggiuntivo ExcelDNA per C #: associazione Excel.

Il codice sorgente è memorizzato nel repository GitHub.

Di seguito sono riportati i collegamenti alle pagine wiki che forniscono una panoramica del progetto e aiutano a iniziare in 4 semplici passaggi .

Spero che tu possa trovare utile l'esempio e il progetto.


Chiama Python da C # Esempi correlati