Terminal Session emulieren

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
ReticulatedPython
User
Beiträge: 3
Registriert: Sonntag 28. März 2010, 17:55

Guten Tag!

Ich möchte unter Linux mit Python ein Add-On für ein Programm schreiben.
Das Add-On soll unter anderem eine Terminalsession emulieren.

Beispiel: Ich möchte mit diesem Add-On folgende Befehle wie im Linux-Terminal ausführen:

cd /home/user/Desktop
rm test.txt
ls

Ob es unter anderen Systemen wie Linux funktioniert oder nicht, sei erstmal egal.
Ich hoffe mir kann hier jemand helfen.

Probiert habe ich es schon mit os.popen und dem subprocess, aber ich kann da immer nur ein Befehl ausführen. Dann wird dieser wieder praktisch vergessen. Ich komme also in dem oben genannten Beispiel nie auf den Desktop, um da was zu löschen und dann die Dateien auszugeben.

Mit freundlichen Grüßen,
ein verzweifelter Python-Anfänger
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Für die von Dir genannten Aktionen hat Python Bordmittel; guck mal in das os-Modul. Z.B. os.listdirs() und os.remove(path).

Ansonsten: Poste doch mal deinen bisherigen Versuch! Ohne etwas Code können wir schlecht sagen, was Du falsch machst...
Das Boad hat code-Tags, die Du dann nutzen solltest. [ post=py ]...[/ code ] ohne die Leerzeichen.

Bei größeren Mengen (so ab >30-40 Zeilen) poste es bitte in ein paste-bin (z.B. paste.pocoo.org)
ReticulatedPython
User
Beiträge: 3
Registriert: Sonntag 28. März 2010, 17:55

Das hier habe ich bisher:

Code: Alles auswählen

p = os.popen('cd /home/user/Desktop')
p = os.popen('./my_app')
s = p.read()
p.close()
message = s;
In message befindet sich dann die Ausgabe des Programmes ./my_app. Statt my_app kann ich dann auch sowas wie "ls" eintippen (die Konsole praktisch)

Problem ist nun:
Wie kann ich nun davor wirklich auf den Desktop wechseln um das Programm auszuführen? Denn wenn ich cd damit ausführe und danach dann ls, bin ich immer noch im gleichen Verzeichnis.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Anstatt os.popen solltest du auf jeden Fall das Modul subprocess nutzen!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du könntest etwa eine Shell starten und in diese deine Befehle eingeben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Ich würde auf jeden Fall Hyperions Vorschlag nachgehen.
Bzw. was ist denn der Sinn des Add-Ons? Soll ein Benutzer Shell-Befehle eingeben können?
ReticulatedPython
User
Beiträge: 3
Registriert: Sonntag 28. März 2010, 17:55

Mit dem Add-On wollte ich ein Terminal emulieren. Das Add-On wurde für ein Chatprogramm geschrieben.
Deshalb bringen mir Hyperions Vorschläge eher wenig was in diesem Zusammenhang.

Aber trotzdem danke für eure Hilfe =)
Antworten