Seite 1 von 1
Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 11:46
von 01detlef
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
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 12:04
von BlackJack
@01detlef: `subprocess` ist Bestandteil der Python-Standardbibliothek. Wieso steht das nicht zur Verfügung?
Ansonsten schau doch einfach mal in die Dokumentation von `subprocess`, da wird Deine Frage gleich am Anfang beantwortet.
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 12:30
von DeaD_EyE
Steht denn os.system zur Verfügung? Man könnte auch noch ctypes nutzen, um aus dem Interpreter heraus ein Kind-Prozess zu starten.
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 12:43
von 01detlef
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
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 12:59
von Sirius3
@01detlef: Du hast noch nicht beantwortet, warum Du kein subprocess benutzen kannst. Es wäre wohl besser, dieses Problem zu lösen.
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 13:03
von 01detlef
da habe ich leider kein Zugriff drauf und hab gehofft, dass man das über ein anderes Kommando schnell lösen könnte?!
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 13:12
von Sirius3
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.
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 14:03
von 01detlef
hilft mir nicht weiter, deshalb suche ich nach einer Alternative....
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 14:28
von Sirius3
@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.
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 16:52
von 01detlef
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?
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 17:00
von 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.
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 17:23
von 01detlef
Muss noch etwas beachtet werden, weil ich diese Meldung bekomme:
NameError: global name 'subprocess' is not defined
Re: Alternative für subprocess.popen
Verfasst: Montag 24. April 2017, 17:34
von __deets__
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...