Hi @ All,
Ich arbeite gerade an einem Projekt, bei dem ich unter Linux verschiedenste Befehle ausführen muss. aktuelles Beispiel ist die Shell ausgabe in eine Datei umzuleiten. An sich keine schwere sache nur möchte ich dies gerne automatisieren indem ich es python machen lasse! ich habe schon versucht mit dem return Befehl dem system zu sagen was es zu tun hat doch es tut sich nichts! Darum bitte ich um eure Mithilfe! Ich brauche also nur den Befehl, der python einen String (programm /home/xy.ini > /home/xy.txt) an das system übergeben lässt das ihn dann ausführt!
MfG
Christoph Seip
befehle an linux shell übergeben!
In dem Thread Shell Befehl in Python implementieren (der ist im Moment genau unter deinem!)wird "find" aus Python heraus aufgerufen.
cu Sebastian
cu Sebastian
Hmm mein Problem liegt eher darin, dass ich nicht direkt einen Shell Befehl, sonder eine ganze Kommandozeile an die Shell übergeben muss. Bei C++ geht das mit return da kann ich dem System einfach etwas zurueck geben! So etwas braeuchte ich! Ich rufe dann zwar auch einen Befehl aus os mit auf allerdings auch ein Programm und 2 unterschiedliche Pfade!
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hilft dir das http://python.sandtner.org/viewtopic.php?t=2875 weiter?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wie soll das gehen? Also das return kannst du in Python auch ganz einfach machen, dass das Programm einen Rückgabewert beim beenden liefert, mit sys.exit(wert).Anonymous hat geschrieben:Bei C++ geht das mit return da kann ich dem System einfach etwas zurueck geben! So etwas braeuchte ich!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ok, soweit so gut! Danke schon mal fuer die Muehen! Ich hab jetzt ein Programm, mit dem ich shell kommandos an die shell uebergeben kann! Nur hab ich aus all dem nicht heraus bekommen koennen wie ich denn eine neue Shell oeffne und vorallem wie ich den Pfad wechseln kann! Befehle gehn aber den Pfad kann ich auch mit cd <pfad> nicht wechseln! Bitte daher um Hilfe!!
MfG
Christoph Seip
MfG
Christoph Seip
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Natürlich kann man den Pfad mit cd wechseln... Allerdings nur in der aktuell geöffneten shell... d.h. du kannst Befehre verketten: "cd /;ls" das aktuelle work-dir für das Python-Skript bleibt aber das selbe. Wenn das auch geändert werden soll, mußt du halt ein os.chdir() machen und danach die shell Aufrufen.
ahja danke! Jetzt geht es! Aber mit welchem befehl oeffne ich den eine neue shell? Ein Problem hab ich noch! Und zwar versuche ich ein Programm aufzurufen indem ich den command string an die shell uebergebe. Schreib ich es direkt in die Shell hinein funktioniert alles aber wenn ich es ueber python mache passiert nichts er sagt mir nur: "no such file or directory" solangsam aerger ich mich aber schon!
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hast du dir das http://python.sandtner.org/viewtopic.php?t=2875 mal durchgelesen?
Ich habe es mir schon einige male durchgelesen nicht zu sagen studiert *g* aber ich bin leider noch nicht so lange in python unterwegs daher hab ich ca erst 60 % verstanden! Ich kann z.B. subprozess nicht importen da ich den header nicht habe! Ausserdem arbeite ich hier ausschliesslich unter linux und der Thread ist hauptsaechlich fuer Windows! Ich muesste doch nur die genaue syntax am besten anhand eines Beispieles fuer das oeffnen einer neuen shell, das hineinschreiben und das schliessen der Shell vor augen haben und schon wuerd ichs verstehen! Aber was genau an Parametern uebergeben werden muss ist leider nirgends ausfuehrlich beschrieben!
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Code: Alles auswählen
import subprocess
# Kommando der ausgeführt wird
command = "ls -l"
# Befehl ausführen und Rückgabewert auslesen:
process = subprocess.Popen( command, shell=True, stdout=subprocess.PIPE)
# Ausgabe der shell anzeigen
print process.stdout.read()
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Aus Python 2.4 oder von effbot.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
alles klar danke! Ich haette da nur noch eine Frage und zwar haeng ich gerade an dem Problem! Wie ist es denn moeglich in python einen explizieten referenzparameter anzulegen? Hab zwar jetzt schon gelesen dass sowieso jeder Parameter einer sei aber ich habe gerade das problem, dass ich in einer Funktion einen Wert stehen habe, den ich aber außerhalb der Funktion benoetige! Wie ich den da rausbekomme bevor die funktion fertig ist weis ich nicht!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das geht - wenn du die Variable global setzt. Also global variablenname und dann kannst du die Variable verändern - nur sei gewarnt: das ist kein guter Stil und sollte vermieden werden. Funktionen sollten aufgaben erfüllen und sonst hermetisch sein, keine Nebenwirkungen haben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
genau das ist mein Problem! Ich glaub ich verzichte auf die Funktion aber dann haette ich n riesigen Quellcode! Mist mit nem referenziellen parameter waer das alles kein Problem! Die Funktion soll bestimmte Verzeichnisse aus einer datei auslesen die Suchkriterien sind immer die gleichen nur der Startpunkt variiert! Somit muss ich eben den Endpunkt nach beenden der Funktion bei erneutem starten als startpunkt verwenden. Aber ohne globale variable bzw RP is da wohl kein Land in sicht wie! Falls jemand doch noch eine Idee haben sollte waer ich sehr dankbar dafuer!
Du kannst einfach die refs in eine liste (oder auch ein in dictionary) packen und diese dann der funktion übergeben. Siehe auch http://www.python.org/doc/faq/programmi ... -reference
joe
joe
Danke fuer den Tip. Habs aber jetzt mal so probiert, dass ich einfach die neue Position als Rueckgabewert an den Parameter uebergeben habe! Mist haett ich auch gleich drauf kommen koennen *g* !
Muss euch echt ein Kompliment aussprechen! Ist eines der besten und hilfreichsten Foren ueberhaupt im Bezug auf Python!
Denke man hoert noch voneinander
Mit freundlichen Gruessen
Christoph Seip
Muss euch echt ein Kompliment aussprechen! Ist eines der besten und hilfreichsten Foren ueberhaupt im Bezug auf Python!
Denke man hoert noch voneinander
Mit freundlichen Gruessen
Christoph Seip
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Dafür benutze ich auch gern mal eine pseudo-Klasse... z.B. für globale Einstellungs-Daten, die an mehreren Stellen benötigt werden. Das ganze läst sich dann auch Auslagern.Leonidas hat geschrieben:Das geht - wenn du die Variable global setzt. Also global variablenname
z.B.
config.py
Code: Alles auswählen
class dbconf:
Host = "beispielserver.tld"
dbname = "meinedatenbank"
User = ""
Code: Alles auswählen
from config import dbconf
print "Host:",dbconf.Host
print "dbname:",dbconf.dbname
Ich glaube ich habe Dein Problem noch nicht ganz verstanden. Was muss denn ausserhalb einer Funktion sichtbar sein, bevor die Funktion fertig ist? Wenn das an anderer Stelle gebraucht wird, dann kann man es doch als Parameter übergeben!?Anonymous hat geschrieben:Funktion soll bestimmte Verzeichnisse aus einer datei auslesen die Suchkriterien sind immer die gleichen nur der Startpunkt variiert! Somit muss ich eben den Endpunkt nach beenden der Funktion bei erneutem starten als startpunkt verwenden. Aber ohne globale variable bzw RP is da wohl kein Land in sicht wie! Falls jemand doch noch eine Idee haben sollte waer ich sehr dankbar dafuer!