2010-07-15 42 views
7

Ho appena finito di scrivere un modello di trasmissione della malattia di dimensioni decrescenti in C#. Tuttavia, sono abbastanza nuovo su .NET e non sono sicuro di come procedere. Attualmente faccio semplicemente doppio clic sul file .exe e il modello importa le impostazioni di configurazione dai file di testo, fa le sue cose e restituisce i risultati in un file di testo.Esegui un'applicazione C# dallo script python

Quello che vorrei fare adesso è scrivere uno script Python per eseguire le seguenti operazioni:

  • Esegui la simulazione N volte (N> 1000)
  • Dopo ogni corsa rinominare il file di output e vendite (cioè ./output.txt -> ./acc/outputN.txt)
  • aggregata, analizzare e analizzare le uscite
  • uscita il risultato in un formato pulito (possibilmente excel)

La maggior parte della mia esperienza di programmazione fino ad oggi è stata in C/C++ su Linux. Sono abbastanza fiducioso sugli ultimi due articoli; tuttavia, non ho idea di come procedere per i primi due. Qui ci sono alcune domande specifiche che mi piacerebbe consigli su:

  • Qual è il/modo migliore più semplice per eseguire il mio C# exe da uno script Python?
  • Qualcuno ha consigli sul modo migliore di eseguire le operazioni del filesystem in Python su un sistema Windows?

Grazie!

+0

Solo per curiosità, ma perché fare il resto in Python (e non in C#)? –

+0

Se stai cercando test unitari, prova NUnit: http://www.nunit.org/ – Bobby

+0

@Henk: volevo evitare di apportare modifiche al modello stesso. Quindi, facendo ciò che voglio richiede la scrittura di una nuova app/script. Le prestazioni della soluzione non sono importanti, ma il tempo necessario per codificarlo è. Ho pensato che un linguaggio di scripting sarebbe stato meglio per un tipo di problema di scripting. Inoltre, mi piace di più il pitone. :) – Mandelbrot

risposta

11

Come di Python 2.6+ si dovrebbe utilizzare il modulo subprocess: (Docs)

import subprocess 

for v in range(1000): 
    cmdLine = r"c:\path\to\my\app.exe" 
    subprocess.Popen(subprocess) 
    subprocess.Popen(r"move output.txt ./acc/output-%d.txt" % (v)) 
+0

Ah-ha qualcuno che conosce effettivamente Python invece di guardare solo documenti come me ... touche, questo dovrebbe essere contrassegnato correttamente. – kersny

+0

Perfetto, grazie mille! – Mandelbrot

+1

Un miglioramento sarebbe usare 'os.rename' invece di eseguire il comando 'move'. –

3

La risposta ai vostri problemi può essere trovata in "os" nella libreria standard python. La documentazione per eseguire varie operazioni, come la gestione dei file e l'avvio dei processi, può essere trovata here.

Gestione processo (esecuzione del programma C#) è disponibile here e le operazioni sui file sono here.

MODIFICA: in realtà, al posto del collegamento al processo sopra riportato, è necessario utilizzare subprocess module.

+0

Ah, esattamente quello di cui avevo bisogno. Non posso credere di non averlo visto prima. Grazie mille! – Mandelbrot

Problemi correlati