Führen Sie eine C# - Anwendung aus einem python-Skript
Habe ich gerade fertig Codierung einer anständig großen-Borreliose übertragung-Modell in C#. Allerdings bin ich mir ziemlich neu .NET und ich bin nicht sicher, wie Sie Vorgehen. Momentan habe ich einfach nur Doppelklick auf die .exe-Datei und das Modell importiert config-Einstellung von text-Dateien, tut seine Sache, und gibt das Ergebnis in eine text-Datei.
Was ich möchte Nächstes zu tun ist, schreiben Sie ein Python-Skript zu tun, die folgenden:
- Führen Sie die simulation N-mal (N > 1000)
- Nach jedem ausführen, benennen Sie die Ausgabe-Datei, und speichern (also ./output.txt -> ./acc/outputN.txt)
- Aggregieren, analysieren und auswerten der Ausgänge
- Das Ergebnis in einigen clean-format (evtl excel)
Die Mehrheit der meine Programmierkenntnisse bisher in C/C++ unter linux. Ich bin ziemlich zuversichtlich für die letzten beiden Elemente; jedoch, ich haben Sie keine Idee, wie es weitergehen für die ersten beiden. Hier sind einige spezifische Fragen, die ich möchte Beratung auf:
- Was ist der einfachste/beste Weg, um mein C# .exe-Datei aus einem python-Skript?
- Hat jemand Ratschläge auf dem besten Weg, das zu tun Dateisystem-Operationen in Python auf einem Windows-system?
Dank!
- Einfach nur neugierig, aber warum den rest in Python (und nicht in C#)?
- Wenn Sie auf der Suche für unit-tests, versuchen, NUnit: nunit.org
- Ich wollte vermeiden, dass die änderungen am Modell selbst. So, mache ich was ich will, erfordert das schreiben eine neue app/Skript. Die performance der Lösung ist nicht wichtig, sondern die Zeit genommen, um code es ist. Ich dachte, eine scripting Sprache wäre besser für einen scripting Art von problem. Plus, ich mag python mehr. 🙂
- Ein bisschen off-topic, aber vielleicht etwas, das Sie vielleicht interessieren könnten. Haben Sie daran gedacht, mit IronPython? Es ermöglicht die Ausführung von python-Skripten in C# (einige Ausnahmen mit Bezug zu C-Bibliotheken). Auch Sie können die Arbeit mit dem .Net framework mithilfe von IronPython. Nur so ein Gedanke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ab Python 2.6+ Sie sollten mit den
subprocess
Modul: (Docs)os.rename
statt execing heraus zumove
.subprocess
ist seit Python 2.4.Popen
nicht warten, bis das Programm fertig zu stellen-es ist nur startet es also,move
Befehl ausgeführt zu früh, es sei dennapp.exe
ist sehr schnell. Könnten Siesubprocess.check_call
zu warten, bis der Kind-Prozess zu EndecmdLine = r"mono c:\path\to\my\app.exe"
und habe mono installiert.Die Antwort auf Ihre Probleme finden Sie im 'os' in der python-standard-Bibliothek. Dokumentation für die verschiedensten Vorgänge, wie der Umgang mit Dateien und das starten von Prozessen, finden hier.
Process management (Läuft dein C# - Programm) gefunden werden kann hier und Datei-Operationen sind hier.
EDIT: Tatsächlich, statt des obigen Vorgangs-link verwenden, sollten Sie die subprocess-Modul.