Seite 1 von 1

Python 2.5.2 popen Problem

Verfasst: Mittwoch 10. September 2008, 15:13
von Ricky
Hallo zusammen,

seit einiger Zeit plagt mich ein Problem mit der aktuellen Python-Distribution (2.5.2).
Es scheint (zuminddest bei mir) ein Zugriffsproblem mit der Funktion "popen" aus dem os-Modul zu geben.
Befehle der Art

import os
p = os.popen(r'cmd /k')

oder
os.popen(r'dir')

resultieren stets in
WindowsError: [Error 5] Zugriff verweigert: 'C:\\Windows\\system32 /c dir'

Hat jemand evtl. einen Tip für mich, woran das liegen könnte ?
Besten Dank im Voraus,

Ralf.

Verfasst: Mittwoch 10. September 2008, 15:17
von Leonidas
``dir`` kann man ja auch nicht über ``popen`` einlesen, weil es ein in die Shell eingebauter Befehl ist.

Hint: ``os.listdir``.

Verfasst: Mittwoch 10. September 2008, 15:23
von Ricky
Okay, dies sollte eigentlich auch bloß ein Beispiel sein.

Jeglicher Aufruf von popen endet mit dem gleichen Zugriff-verweigert-Fehler.
Den Ursprung hat das ganze eigentlich in der Verwendung des gnuplot-Moduls. in dem läßt sich gnuplot über

import Gnuplot
p = Gnuplot.Gnuplot()

nicht starten, es ergibt sich der gleiche Fehler.
Und eben den hab' ich jetzt durch bugtracing bis zu popen zurückverfolgt, in dem Fall zu gp_win32.py.

Grüße,
Ralf.

Verfasst: Mittwoch 10. September 2008, 15:51
von Ricky
Hallo zusammen, kleines Update:

Nachdem ich jetzt hier im Forum ein klein wenig gesucht und gefunden hab', funktioniert schon mal folgende Geschichte:

import subprocess
subprocess.Popen('Explorer')

Jetzt wüßte ich bloß noch gern, wie ich dem Modul gp_win32.py eben beibringe, diese Funktion zu verwenden ...
Importieren von subprocess in gp_win32.py funktioniert schonmal nicht:

self.gnuplot = subprocess.Popen(GnuplotOpts.gnuplot_command, 'w')
File "C:\Python25\lib\subprocess.py", line 545, in __init__
raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer

Hat jemand noch 'nen Tip für mich ?

Grüße,
Ralf

Verfasst: Donnerstag 11. September 2008, 14:47
von Leonidas
Ricky hat geschrieben:Jetzt wüßte ich bloß noch gern, wie ich dem Modul gp_win32.py eben beibringe, diese Funktion zu verwenden ...
Steht in der Dokumentation.
Ricky hat geschrieben:Importieren von subprocess in gp_win32.py funktioniert schonmal nicht:
Importieren klappt, sonst könntest du ja nicht der Klasse Popen im Modul subprocess nicht die falscher Parameter mitgeben sondern hättest einen ImportError.