Python Unterprozess mit gleichen Argumenten aufrufen

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
Juggl3r
User
Beiträge: 1
Registriert: Montag 3. Dezember 2012, 02:00

Hallo,

ich möchte ein Programm von mir starten, z.b:
python Test.py ARG1 ARG2

und dann soll das Python programm ein anderes Programm (z.B.: echo) ausführen und die gleichen Argumente übergeben.

Außerdem muss ich den Rückgabewert zurückbekommen und Benutzer sollten normal mit dem Aufgerufenen Programm interagieren können.
Den C-Code dafür hätte ich, der sieht so aus:

Code: Alles auswählen

pid_t pID = fork();
if(pID == 0) {
  execve(myFile, argv, envp);
}
else {
  int ret;
  wait(&ret);
  return WEXITSTATUS(ret);
}


wobei Main so aussieht:

int main(int argc, char *argv[], char *envp[]);
Bin mit Python allerdings nicht so fit, kann mir jemand bitte helfen?
Die Umgebungsvariablen sind nciht so wichtig, aber die Argumente + Rückgabewert wären mir sehr wichtig.

lg
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Externe Programme startet man in Python mit subprocess.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Du brauchst im Wesentlichen:

Code: Alles auswählen

import subprocess
exitcode = subprocess.call(['echo'] + args)
Wenn du Kommandozeilenparameter übernehmen möchtest:

Code: Alles auswählen

import sys
args = sys.argv[1:]
Damit bewirkst du, dass eine neue Liste an `args` gebunden wird, welche alle Kommandozeilenargumente, außer dem ersten beinhaltet. Das erste Argument ist bekanntlich der Programmname - und den möchtest du vermutlich nicht ausgeben.
Antworten