vorab ich weiss, es gibt schon zich threads zu dem thema
und ich hab auch einige durchgearbeitet und mir die modul dokumentation durchgelesen
es tut mir auch leid, dass ich hier nochma zum subprocess modul nachfragen muss und weiter auf diesem leidigen thema rumreite
nur irgendwie hängt es bei mir immer noch, wahrscheinlich ist mein verstand einfach zu begrenzt^^
bin in python der absolute anfänger, ein, zwei tutorials durchgearbeitet, hier im forum rumgelesen und mir die library nen bisserl angeguckt
Mein erster Versuch war nun mit hilfe des subprocess moduls die windoof eingabeaufforderung zu öffnen, dort einen befehl zu schreiben und die rückgabe auszulesen.
wie vorrauszusehen hat es nicht funktioniert
nun ist die frage, was sagen mir die fehlermeldungen genau
und wie falsch ist mein quellcode
Code: Alles auswählen
#! /usr/bin/env python
#komtest1.py
# Module importieren:
#-------------------------------------
import subprocess
import os
import sys
# Funktionen:
#--------------------------------------
def befehl(blist): # funktion mit parameter blist zur kommunikation mit einem programm,
#in blist stehen programm und zuübermittelnde befehle
subprocess.Popen(blist,bufsize=0,stdin=subprocess.PIPE,stderr=subprocess.PIPE,stdout=subprocess.PIPE)
subprocess.wait() #warten bis sequenz abgearbeitet ist und bis rückgabewerte geliefert wurden
print process.stdout.read()
print process.stderr.read()
Code: Alles auswählen
>>> ================================ RESTART ================================
>>> blist = 'cmd, netstat -n' # soll eine Sequenz abzuarbeitender Befehle werden,
#cmd soll die Eingabeaufforderung von windoof öffnen,
# --si servers soll dann in diese eingegeben werden
>>> import komtest1 # einbinden der datei die ich geschrieben habe(oberer quellcode)
>>> komtest1.befehl(blist) #aufrufen der funktion die in komtest1 geschrieben wurde mit der variable blist als parameter
Traceback (most recent call last):
File "<pyshell#11>", line 1, in -toplevel-
komtest1.befehl(blist)
File "C:\Python24\komtest1.py", line 12, in befehl
subprocess.Popen(blist,bufsize=0,stdin=subprocess.PIPE,stderr=subprocess.PIPE,stdout=subprocess.PIPE)
File "C:\Python24\lib\subprocess.py", line 542, in __init__
errread, errwrite)
File "C:\Python24\lib\subprocess.py", line 706, in _execute_child
startupinfo)
WindowsError: [Errno 2] Das System kann die angegebene Datei nicht finden
>>>
ich schätze mal dass er mit cmd nichts anfangen kann, da werde ich noch suchen wie dies richtig funktioniert, vielleicht via einem befehl von dem modul os, schaun mer mal
dafür wird wohl der windowserror stehen oder?
was sollen mir die fehler davor sagen?
ansonsten kurzes verständnis zu subprocess:
bei popen die args sind die befehle die ausgeführt werden
stdout = subprocess.PIPE liefert mir dann die rückgabewerte des programmes welches ich ausführe oder?
wird nachdem die befehlssequenz abgearbeitet wurde, die rückgabewerte ausgelesen wurden, das programm was mit hilfe von subprocess geöffnet wurde automatisch geschlossen oder läuft es im hintergrund weiter und ich muss es via extra befehl schließen?
ich bin für jede hilfe, jeden tipp, jeden anreiz dankbar und ihr braucht euch nicht zurückhalten, sprich:
wenn der quellcode das schlechteste ist was ihr je gesehn habt und ich des Programmierens nicht mächtig bin
könnt ihr das gerne sagen, mir hilft momentan so ziemlich alles weiter ^^
also seid bedankt für eure mühen
gruß
Pablo