Seite 1 von 1

Suche Python Programm

Verfasst: Mittwoch 5. Dezember 2007, 18:37
von feldmaus
Hi Alle,

Mein Problem,

Code: Alles auswählen

                Ich will ein Python Script/Programm erstellen,
                welches aus mehreren Modulen bestehen soll.
                Also ein Haupt-Programm das eine Art
                Eingabeaufforderung darstellt, in der dann
                Befehle(Python-Module) ausgeführt werden können, wie
                eine Shell. Dort sollte man auch Annehmlichkeiten
                haben wie Befehlsvervollständigung.
                Für das Haupt-Programm wollte ich allerdings
                schon ein fertiges Python Programm nehmen.
                Die Python-Module schreibe ich natürlich selber :-)
Meine Fragen,

Code: Alles auswählen

                Kennt da Jemand ein Python Programm welches ich
                an meine Bedürfnisse anpassen kann?
Sonstiges,

Code: Alles auswählen

                Als OS wollte ich sowohl Linux als auch Windows nutzen.
                Bestimmt hat der eine oder andere mal ein Python Programm
                gesehen, welches hier vorgestellt wurde.
Grüsse Markus

Verfasst: Mittwoch 5. Dezember 2007, 18:59
von schlangenbeschwörer
Was genau suchst du? Einen Editor? Ein Komandozeileneingabe?
Eine GUI in die man Befehle eingeben kann, mit Autokorrektur, und wo die Ergebnisse ausgegeben werden?
Falls letzteres, kannst du dir das ganz einfach selbst bauen:
stdin und stdout in ein Tkinter.Text umleiten oder statt stdin selbst mit eval/exec ausführen oder evtl. umwandeln und dann weiterverarbeiten, dann kannste in nem loop überprüfen, ob du die Eingabe ergänzen kannst. Was für eingaben sollen das denn sein? Nur Werte oder Python-Befehle?

Verfasst: Mittwoch 5. Dezember 2007, 19:06
von BlackJack
Vielleicht lohnt sich ein Blick in das `cmd`-Modul aus der Standardbibliothek.

Verfasst: Mittwoch 5. Dezember 2007, 20:20
von feldmaus
schlangenbeschwörer hat geschrieben:Was genau suchst du? Einen Editor? Ein Komandozeileneingabe?
Eine Komandozeileneingabe mit Befehlvervollständigung wie man es unter Linux gewohnt ist, allerdings sollen als Befehle nur meine Python Module zur Verfügung stehen.

Ich glaube "Interaktive Shell trifft es ganz gut".

Verfasst: Mittwoch 5. Dezember 2007, 20:37
von feldmaus
BlackJack hat geschrieben:Vielleicht lohnt sich ein Blick in das `cmd`-Modul aus der Standardbibliothek.
Hört sich interessant an.

Frage,

Code: Alles auswählen

Aber wie wird denn mit dem cmd Modul eine Interaktive Shell gestartet?
Gibt es da vielleicht ein Tutorial zu auf Deutsch/Englisch?

Verfasst: Donnerstag 6. Dezember 2007, 09:41
von Rebecca
Es haengt natuerlich ein wenig von deinen Beduerfnissen ab, aber du koenntest auch einfach die Python-Shell oder ipython benutzen als deine Kommandozeileneingabe benutzen. (Gerade ipython kann man noch sehr nett konfigurieren). Hier waere dann auch einmal einder der wenigen Faelle, wo man ueber *-importe nachdenken kann, dann haette der Benutzer in der Python-Shell/ipython direkt deine Funktionen zur Verfuegung, inklusive TAB-Vervollstaendigung, History, Hilfesysem und eingabauter Skiptsprache. :D

Verfasst: Donnerstag 6. Dezember 2007, 10:07
von feldmaus
Rebecca hat geschrieben:Es haengt natuerlich ein wenig von deinen Beduerfnissen ab, aber du koenntest auch einfach die Python-Shell oder ipython benutzen als deine Kommandozeileneingabe benutzen.
Dann muss ich wohl konkreter werden,

Code: Alles auswählen

Also man sollte mit TAB + TAB eine Auflistung meiner Module bekommen.
Bzw. wenn man einen Befehl nur zum Teil geschrieben hat und dann  TAB
drückt, dann sollte er den Befehl vervollständigen.
weiteres,

Code: Alles auswählen

Unter Debian Etch funktioniert die TAB Taste allerdings nicht in der Python Shell.
Frage,

Code: Alles auswählen

Woran kann das liegen?

Verfasst: Donnerstag 6. Dezember 2007, 10:24
von Rebecca
Schon verstanden. Beispiel mit der normalen Python-Shell: Erzeuge dir eine Datei

Code: Alles auswählen

try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

import modul1
import modul2
import modul3
und lasse die Umgebungsvariable PYTHONSTARTUP darauf zeigen. Wenn du die Python-Shell oeffnest, funktioniert folgendes:

Code: Alles auswählen

>>> m<TAB>
modul1  modul2  modul3
Klar, wenn du einfach nur TAB eintippst, bietet er dir eine Liste aller Python-Namen an. Wenn du das nicht willst, kannst du den Completer an deine Beduerfnisse anpassen, das habe ich auch schonmal gemacht:http://www.python-forum.de/topic-5116.html

Unter Linux wuerde ich dann ein kleines Wrapper-Shellscript schreiben, was automatisch die PYTHONSTARTUP-Variable setzt, sodass "deine" Python-Shell nicht mit den Einstellungen der normalen Python-Shell in Konflikt kommt.

Was ipython noch alles fuer zusaetliche Moeglichkeiten bietet, weiss ich auch nicht alles, ich wuerde sagen, lies dir mal die Doku dazu durch, das lohnt sich bestimmt.

PS: Warum schreibst du immer deine Fragen in Code-Tags?

Verfasst: Donnerstag 6. Dezember 2007, 17:03
von feldmaus
Rebecca hat geschrieben: PS: Warum schreibst du immer deine Fragen in Code-Tags?
Meine Antwort,
  • ich versuche den Text lesbarer zu gestalten.
    Allerdings habe ich die code Tags aus Routine Gründen verwendet.
    Ich hätte auch Quote Tags nehmen können.
Danksagung und Entscheidung,
  • Auf jeden Fall danke für den Tipp. Ich denke ich werde erstmal
    mein Programm konkretisieren müssen und dann entscheiden
    was besser wäre. Das Modul "cmd" oder eine angepasste
    python Shell.
Grüsse Markus

Verfasst: Donnerstag 6. Dezember 2007, 17:24
von Zap
Sich selber zu zitieren wirkt ein bisschen Schizophren ;)

Ich denke das die Allgemeinheit mir zustimmen wird, dass man Beiträge ohne Absatzhighlighting gut lesen kann.
Mit, ist es doch sehr befremdlich.

Verfasst: Donnerstag 6. Dezember 2007, 18:12
von feldmaus
Man kann bei mir sofort sehen was das Problem ist, welche Fragen ich habe.
Es ist also alles sauber getrennt.

Verfasst: Donnerstag 6. Dezember 2007, 18:39
von Zap
Vielleicht als Anregung:
  • Den Text in [ list ] Tags zu setzen sollte ausreichen um Absätze hervorzuheben.
    Dort sind zumindest keine Header oder ähnliches vorhanden
~~ so, schluss mit Offtopic ~~

Verfasst: Donnerstag 6. Dezember 2007, 19:18
von feldmaus
Zap hat geschrieben:Vielleicht als Anregung:
  • Den Text in [ list ] Tags zu setzen sollte ausreichen um Absätze hervorzuheben.
    Dort sind zumindest keine Header oder ähnliches vorhanden
~~ so, schluss mit Offtopic ~~
Danksagung,
  • Guter Tipp. :-)

Verfasst: Freitag 7. Dezember 2007, 14:53
von Leonidas
feldmann_markus hat geschrieben:Man kann bei mir sofort sehen was das Problem ist, welche Fragen ich habe.
Es ist also alles sauber getrennt.
Da muss ich dagegen halten. Es ist zwar getrennt, aber es erinnert eher an eine Gliederung - und ist für die Leser kontra-intuitiv.

Stell dir mal folgendes Gespräch mit dem Briefträger vor:
Hypothetisches Gespräch hat geschrieben:Briefträger: Hallo, ich habe einen Brief für sie.
Du: Meine Kentnissnahme: Oh, hallo, ein Brief für mich. Meine Reaktion: Oh, auf den habe ich schon lange gewartet. Meine Verabschiedung: Auf wiedersehen.
Ich würde mir denken, dass darauf dann erstmal so ziemlich jede Person erstmal keine Antwort weiß.

Sinnvoller ist meiner Meinung nach "Wie man Fragen richtig stellt" zu beachten.

Bevor das jemand in den falschen Hals bekommt: damit wollte ich niemanden niedermachen, ich finde diesen Antwortstil ziemlich originell, aber nicht empfehlenswert - durchaus Diskutierenswert.