Alternative für subprocess.popen

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
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

Hallo zusammen,

ich verwende den Aufruf

Code: Alles auswählen

Process = subprocess.popen(Befehl, stdout=STDO, stderr=STDE)
und nun würde ich gerne wissen, welche Alternativen es noch gibt, um den gleichen Prozess zu starten, aber ohne subprocess.popen. Die subprocess-Pakete stehen mir nicht zur Verfügung (der Grund ist ein wenig kompliziert) und nun würde ich den Befehl gerne ersetzen. Ich hatte os.system versucht, aber da konnte ich stdout und stderr nicht übergeben.

Gibt es andere Möglichkeiten?

Viele Grüße
Detlef
BlackJack

@01detlef: `subprocess` ist Bestandteil der Python-Standardbibliothek. Wieso steht das nicht zur Verfügung? :shock:

Ansonsten schau doch einfach mal in die Dokumentation von `subprocess`, da wird Deine Frage gleich am Anfang beantwortet.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1012
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Steht denn os.system zur Verfügung? Man könnte auch noch ctypes nutzen, um aus dem Interpreter heraus ein Kind-Prozess zu starten.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

Hallo,

also os.system funktioniert, aber ich weiß nicht, wie ich stdout und stderr übergeben kann? Habe auch os.popen3 probiert, aber auch da kann ich die Files nicht übergeben.

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

@01detlef: Du hast noch nicht beantwortet, warum Du kein subprocess benutzen kannst. Es wäre wohl besser, dieses Problem zu lösen.
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

da habe ich leider kein Zugriff drauf und hab gehofft, dass man das über ein anderes Kommando schnell lösen könnte?!
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

das subprocess-Modul ist Bestandteil der Standardbibliothek. Wenn Du also Zugriff auf Python hast, hast Du auch Zugriff auf subprocess. Falls nicht, hier der Link.
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

hilft mir nicht weiter, deshalb suche ich nach einer Alternative....
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@01detlef: es gibt keinen Grund, warum es Dir nicht weiterhilft. Die Funktionen in subprocess-Modul verwenden nichts magisches. Also auch wenn aus irgendeinem Grund ein Deiner mysteriösen Python-Installation kein subprocess vorhanden sein sollte, kann man immer noch das subprocess-Modul so wie es ist, kopieren und benutzen. Aber solange Du nicht verrätst, WARUM Du meinst, subprocess nicht verwenden zu können, kann man Dir beim besten Willen nicht helfen.
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

Hallo,

ich habe nun subprocess.py eingebunden mit
from subprocess Import *
und danach kommt der Aufruf subprocess.popen. Nun wird mir aber der Fehler angezeigt, dass subprocess nicht definiert ist.

Was muss man denn noch machen?
BlackJack

@01detlef: Nachlesen wie ``from something import irgendwas`` funktioniert und was danach im importierenden Modul an einen Namen gebunden ist und was nicht. Wobei Du Dir das mit dem * gar nicht erst angewöhnen solltest. Du weisst doch gar nicht was in dem Modul alles definiert ist und selbst wenn es nur das wäre was dokumentiert ist und auch nur das was das Modul selbst definiert und sich nicht selbst schon von woanders importiert hat, brauchst Du doch wohl kaum *alles* aus dem Modul.
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

Muss noch etwas beachtet werden, weil ich diese Meldung bekomme:

NameError: global name 'subprocess' is not defined
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

ja, man muss es richtig machen.

Im Ernst - ohne das wir deinen Code kennen, kann man dazu nichts sagen. Und das ein Name nicht da ist liegt daran, dass du ihn nicht importiert hast. Ein "import subprocess" ist schon von Noeten...
Antworten