C# mit Python?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Was genau macht das C# Programm und welche Daten liefert es?

Ich sehe versch. Möglichkeiten:

  1. Das C# Programm wird von Python aufgerufen - zB subprocess.check_output() und die Ausgaben des Programms landen in einer Variable
  2. Das C# Programm ruft Python auf und übergibt die Daten
  3. Das C# Programm schreibt eine Log- oder Ausgabe-Datei die dann von Python gelesen wird - wächst die Datei zB ständig an dann kann man sich in Python die Nummer der letzten Zeile aus dem aktuellen Durchlauf merken und dann überspringen - zB with open(...) as f.
  4. Ist das C# Programm auf einem anderen PC dann könnte man eine API verwenden und das C# Programm bietet einen kleinen Serverdienst an der von Python aus angesprochen wird - zB mit socket oder requests.
  5. Das C# Programm liefert die Daten an Python. Dazu kannst du mit versch. Modulen einen kleinen Server erstellen der die Daten annimmt.
  6. etc.

Sollte das C# Programm binäre Daten liefern müsste man die oben genannten Methoden etwas anpassen.

Außerdem kommt es drauf an welche Daten du in Python brauchst und wie groß diese sind...

Natürlich gibt es einige andere Methoden wie das einbinden von DLLs mit ctypes oder IronPython, Python for .NET, etc.

Woher ich das weiß:Berufserfahrung – Softwareentwickler f. Web, Win. & Linux (seit 2001)

Ganz “dämlich”:

C# Programm holt die Daten und speichert sie in eine Datei (ergebnis.txt)

Das Pythonprogramm startet das C# Programm, wartet bis es fertig ist und liest dann einfach ergebnis.txt.

Ansonsten könnte man sowas natürlich auch über einen lokalen Socket mit TCP schicken, ist aber nicht so trivial wie die Datei!

Woher ich das weiß:Studium / Ausbildung – Student der Informatik an der HU Berlin

Das kommt jetzt auf die Schnittstelle an.

Erhältst du die Infos über ein fertiges C# Programm oder willst du eine C# DLL in Python einbinden?

Für ersteres brauchst du irgendeine Art von API für das Programm, das kann jetzt ein Datenaustausch über Pipes, Networkports etc. oder auch einfach nur über stdin und stdout sein.

Für zweiteres gehts soweit ich weiß mit dem normalen Pythoninterpreter nicht und du musst Ironpython verwenden.


KarlRanseierIII  22.03.2020, 12:09

Es fehlt noch eien Variante (IMHO): Den PythonInterpreter komplett in das eigene C# einbinden. In C ist das 'Straightforward, insofern müßte sich mit einem Shim/Wrapper das doch auch in C# umsetzen lassen?

0

Kannst die Methoden in der C# Library nach außen hin sichtbar machen, und dann aus Python aufrufen


Hannes0O0 
Fragesteller
 22.03.2020, 10:43

Ja, sollte gehen.

0
Hannes0O0 
Fragesteller
 22.03.2020, 10:49
@Hannes0O0

Ich meine nur das man sie nach außen Sichtbar macht. Ich glaub nicht dass man die dann so leicht mit Python abrufen kann.

0
Lolwis111  22.03.2020, 18:23
@Bojack28

Ok, und wie? Man bräuchte dann ja irgendeine Interface API, vielleicht gibts da ein Pythonpackage, aber “ganz einfach” würde ich das nicht nennen.

0

Auf demselben System?

Wie kommen die Dtane zustanden?

Wird das C#-Programm nur kurz gestartet?

Warum mischt du das überhaupt?


Hannes0O0 
Fragesteller
 22.03.2020, 10:42

Auf dem Selben System und das C# Programm läuft dauerhaft.

0