Argumente an subprocess.Popen übergeben

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
studi
User
Beiträge: 25
Registriert: Montag 2. Juni 2008, 22:59

Hollo.

Habe in test.py folgende Funktion:

Code: Alles auswählen

def modul_1():
    modul1_ip='132.188.113.132'
    modul1_port='8889'
    modul1_name='schrauber'
    start_agent(modul1_ip, modul1_port,modul1_name)
start_agent ist im agent_main_modul2.py

Frage: Wie kann ich mit subprocess.Popen das Modul agent_main_modul2.py mit den Argumenten modul1_ip='132.188.113.132' modul1_port='8889' modul1_name='schrauber'
starten? Besser gesagt geht das überhaupt, in der Doku habe ich nichts derartieges finden können. "I do'n speak english". :lol:

Bitte um Tips.
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

du kannst mit subprocess externe programme öffnen. natürlich könntest du einen string mit den argumenten zusammenstellen und an subprocess übergeben (oder als liste).

aber ich glaub eher, start_agent ist eine funktion im modul agent_main_modul2.py, eh? (ein gewöhnliches python modul, oder was eigenes?)

das kannst vermutlich importieren, dann hast zugriff auf die funktionen darin.

z.B.:

Code: Alles auswählen

 import agent_main_modul2

agent_main_modul2.start_agent(arg1,arg2,arg3)
subprocess wär überhaupt nur dann möglich, wenn das "modul" diese argumente akzeptiert und an die funktion darin weitergibt.
studi
User
Beiträge: 25
Registriert: Montag 2. Juni 2008, 22:59

Ja agent_main_modul2.py ist mein eigenes Python Modul.
Nein leider geht es nicht mit einem Import, da ich mehrere Funktionen habe z.B modul_1(), modul_2() und so weiter,
die parallel und unabhängig von einander laufen müssen.
Ich versuche es mal herauszufinden wie das mit den Listen geht und melde mich dann nochmal.
Danke. :)
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

also ich glaub nicht, dass ich das problem hier verstehe, aber ...


du kannst mit subprocess skripte genauso aufrufen, wie du es in der kommandozeile machen würdest. alternativ, und das scheint hier sehr gut zu passen, kannst die argumente als elemente in eine liste schreiben.

Code: Alles auswählen

command = [modul1_path, modul1_ip, modul1_port, module1_name]
subprocess.Popen(command)
fragst du im module argumente von der kommandozeile ab? ich mein, es ist dein eigenes, also kein problem das zu ändern, aber ein modul ist für mich ein python skript, das zum importieren gedacht ist, also im normalfall keine argumente von der kommandozeile berücksichtigen braucht.
Benutzeravatar
dennda
User
Beiträge: 17
Registriert: Montag 19. November 2007, 22:07

Nein leider geht es nicht mit einem Import, da ich mehrere Funktionen habe z.B modul_1(), modul_2() und so weiter,
die parallel und unabhängig von einander laufen müssen.
Da würde ich aber nicht den Umweg über subprocess gehen sondern mir die Dokumentation der Module `thread` und `threading` zu Gemüte führen.
Antworten