Starten von CCM+ Macro aus Python in Windows

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
vanKey
User
Beiträge: 18
Registriert: Mittwoch 31. August 2022, 07:14

Hallo zusammen,

ich möchte unter Windows mit einem "Star CCM+"-Makro aus python heraus eine Simulation starten.
Was ich bisher geschafft habe, ist es, Star CCM+ zu öffnen und die Simulationsdatei einzuladen:

Code: Alles auswählen

...
subprocess.run(["K:/.../lib/starccmw.exe", "K:/.../file.sim"], shell=True)
Weiß jemand wo und wie in dem Befehl oben nun noch ein "Star CCM+"-Makro (start.java) angezogen werden kann, sodass die Simulation automatisch startet?
In Linux sieht das so aus, mir fehlt aber der passende Windows-Befehl dazu:

Code: Alles auswählen

...
subprocess.run(["/mnt/.../starccm+ -licpath blablabla -power -np 1 ./file.sim -batch start.java &"], shell=True)
VG
vanKey
Benutzeravatar
__blackjack__
User
Beiträge: 13937
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@vanKey: Das ist ja jetzt nicht wirklich eine Python-Frage, sondern wie man ein Programm startet was eher nicht so viele Leute benutzen. Gibt es bei den Argumenten des gleichen (?) Programms denn Unterschiede zwischen Windows und Linux?

Für die Python-Seite kann ich jedenfalls nur sagen, dass das ``shell=True`` da nichts zu suchen hat. Im ersten Fall ist es gänzlich unsinnig, und im zweiten Fall muss man das Kommando wie im ersten Fall als Liste übergeben und das ``&`` am Ende weg lassen. Und gegebenfalls `Popen` statt `run()` verwenden wenn das Python-Programm asynchron weiterlaufen soll.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
vanKey
User
Beiträge: 18
Registriert: Mittwoch 31. August 2022, 07:14

Hallo,

vielen Dank für die Rückmeldung.
Habe mittlerweile herausgefunden, dass ich die Software und das Makro über die Windows Powershell starten kann. Die Berechnung wird also korrekt durchgeführt,
wenn ich alles aus der Powershell heraus starte.
Wenn ich allerdings versuche, das Ganze aus Python heraus zu starten, läuft es nicht an. Mein Code dazu sieht wie folgt aus:

Code: Alles auswählen

process=subprocess.run(["powershell","K:\...\starccm+.exe -licpath blablabla -np 1 K:/.../file.sim -m K:/.../start_windows.java"])
result=process.communicate()[0]
print (result)
Python gibt mir in der Konsole dann "None" aus. D.h. er hat wohl nichts unternommen.
Mache ich beim Aufrufen mittels subprocess noch etwas falsch?

Grüße
Sirius3
User
Beiträge: 18227
Registriert: Sonntag 21. Oktober 2012, 17:20

Der Aufruf über powershell ist unnötig. Die Argumente müssen einzelne Elemente def Liste sein.
Da Du stdout nicht umleiten, ist der Wert natürlich None.
Wenn es Probleme gibt, wäre es gut zu wissen, was denn in der Konsole ausgegeben wird.

Code: Alles auswählen

subprocess.run([r"K:\...\starccm+.exe", "-licpath", "blablabla", "-np", "1", "K:/.../file.sim", "-m", "K:/.../start_windows.java"])
vanKey
User
Beiträge: 18
Registriert: Mittwoch 31. August 2022, 07:14

Jup, ich habe auch festgestellt, dass die Argumente einzelne Elemente der Liste sein müssen.
Das Problem ist gelöst. Danke für die Info. Grüße
Antworten