Unterabschnitte


2. Benutzung des Python-Interpreters


2.1 Aufruf des Interpreters

Der Python-Interpreter ist normalerweise als /usr/local/bin/python auf den Rechnern installiert, wo er verfügbar ist. Das Verzeichnis /usr/local/bin in den Suchpfad der eigenen Unix-Shell aufzunehmen, erlaubt es, ihn mit dem Kommando


python

in der Shell aufzurufen. Da die Wahl des Verzeichnisses für den Interpreter eine Option bei der Installation ist, sind andere Plätze auch möglich. Fragen Sie bei Ihrem lokalen Python-Guru oder Systemadministrator nach. (Eine beliebte Alternative ist z.B. /usr/local/python.)

Die Eingabe eines Dateiende-Zeichens (engl. EOF) (also Control-D unter Unix, Control-Z unter DOS oder Windows) unter dem primären Prompt veranlaßt den Interpreter, sich mit einem Exit-Status von Null zu beenden. Falls das bei Ihnen nicht geht, können Sie den Interpreter beenden, indem Sie folgende Kommandos eingeben: "import sys; sys.exit()".

Die Eigenschaften des Interpreters bzgl. der Zeilen-Editierung sind nicht sehr komfortabel. Unter Unix mag wer immer den Interpreter installiert hat auch die Verwendung der GNU Readline-Bibliothek eingeschaltet haben, die weitergehende interaktive Editier- und Merk-Eigenschaften erlaubt. Der vielleicht schnellste Test, um zu sehen, ob der GNU-Kommandozeilen-Editor unterstützt wird, ist der, Control-P gleich nach dem ersten Python-Prompt zu tippen. Sollte es piepen, so haben sie die erweiterten Editier-Eigenschaften (siehe Angang A für eine Einführung in die Tastaturbelegung). Sollte nichts passieren, oder wenn ein P erscheint, sind diese Eigenschaften nicht verfügbar und Sie können nur die Rückschrittaste (engl. backspace) drücken, um vorherige Zeichen in der Zeile zu löschen.

Der Interpreter arbeitet ein wenig wie eine Unix-Shell: wenn er mit einer Standard-Eingabe aufgerufen wird, die mit einem konsolenähnlichen (tty) Gerät verbunden ist, liest er Kommandos und führt sie interaktiv aus. Wird er mit einem Dateinamen als Argument oder einer Datei als Standard-Eingabe aufgerufen, liest er ein Skript aus dieser Datei.

Ein dritter Weg, den Interpreter zu starten, ist "python -c command [arg] ...", wodurch die Anweisungen in command ausgeführt werden, analog zur Option -ceiner Shell. Da Python-Anweisungen oft Leerzeichen und andere Zeichen beinhalten, die für eine Shell von besonderer Bedeutung sind, ist es am besten, man setzt command gänzlich in doppelte Anführungszeichen.

Man beachte, daß zwischen "python file" und "python <file"ein Unterschied besteht. In letzterem Fall werden Eingabeaufforderungen des Programms wie z.B. Aufrufe von input() und raw_input() von file aus bedient. Da diese Datei bereits vom Parser bis zum Ende gelesen wurde, bevor das Programm ausgeführt wird, wird das Programm sofort ein EOF erhalten. Im ersteren Fall (der der Normalfall ist) werden sie von der Datei aus bedient, die mit der Standard-Eingabe des Python-Interpreters verbunden ist.

Wenn eine Skript-Datei verwendet wird, ist es manchmal nützlich, das Skript auszuführen und anschließend in den interaktiven Modus zu gehen. Dies kann erreicht werden, indem die Option -i vor das Skript gesetzt wird. (Das funktioniert nicht, wenn das Skript von der Standard-Eingabe gelesen wird - aus den gleichen Gründen wie im vorherigen Absatz.)


2.1.1 Argumentübergabe

Falls dem Interpreter bekannt, werden der Name des Skriptes und weitere Argumente dahinter dem Skript in der Variablen sys.argvübergeben, die eine Liste von Strings ist. Ihre Länge ist mindestens eins. Wenn kein Skript und keine Argumente übergeben werden, ist sys.argv[0] ein leerer String. Wenn der Skriptname als '-' übergeben wird, d.h. Standard-Eingabe, wird sys.argv[0] auf '-' gesetzt. Wenn -c command verwendet wird, wird sys.argv[0] auf '-c' gesetzt. Optionen, die nach -c command gefunden werden, werden vom Python-Interpreter selbst nicht behandelt, sondern in sys.argv belassen.


2.1.2 Interaktiver Modus

Wenn Kommandos von einem konsolenähnlichen Gerät gelesen werden, so sagt man, daß der Interpreter im interaktiven Modus ist. In diesem Modus erwartet er das nächste Kommando nach dem primären Prompt, normalerweise drei größer-als-Zeichen (">>> "). Das Warten auf Fortsetzungszeilen wird durch den sekundären Prompt, standardmäßig bestehend aus drei Punkten, ("... ") angezeigt.

Der Interpreter gibt eine Willkommensnachricht mit seiner Versionsnummer und einem Copyright aus, bevor die Ausgabe des primären Prompts erfolgt, z.B. so:


python
Python 1.5.2b2 (#1, Feb 28 1999, 00:02:06)  [GCC 2.8.1] on sunos5
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>>


2.2 Der Interpreter und seine Umgebung


2.2.1 Fehlerbehandlung

Tritt ein Fehler auf, so gibt der Interpreter eine Fehlermeldung und einen ,,stack trace`` aus. Im interaktiven Modus kehrt er dann zum primären Prompt zurück. Wenn die Eingabe von einer Datei kam, terminiert er mit einem von Null verschiedenen Exit-Status, nachdem der ,,stack trace`` ausgegeben wurde. (Ausnahmen, die von einer except-Klausel in einer try-Anweisung behandelt werden, sind keine Fehler in diesem Zusammenhang.) Einige Fehler sind ausnahmslos fatal und verursachen eine Terminierung mit Exit-Status ungleich Null. Dies gilt für interne Inkonsistenzen und einige Fälle von nicht ausreichendem Hauptspeicher. Alle Fehlermeldungen werden auf die Standard-Fehlerausgabe geschrieben. Die normale Ausgabe von ausgeführten Kommandos wird auf die Standard-Ausgabe geschrieben.

Die Eingabe eines Unterbrechungszeichens (normalerweise Control-C oder DEL) beim primären oder sekundären Prompt annulliert die Eingabe und bewirkt die Rückkehr zum primären Prompt.2.1Ein Unterbrechungszeichen einzutippen, während ein Kommando ausgeführt wird, löst die KeyboardInterrupt-Ausnahme aus, die mit einer try-Anweisung behandelt werden kann.


2.2.2 Ausführbare Python-Skripte

Unter BSD-ähnlichen Unix-Systemen können Python-Skripte direkt ausführbar gemacht werden, genau wie Shell-Skripte, indem die Zeile


#! /usr/bin/env python

(unter der Annahme, daß der Interpreter in der Variable $PATH ist) zu Beginn des Skriptes gesetzt wird und die Datei ausführbar gemacht wird. Das "#!" müssen die ersten zwei Zeichen der Datei sein. Man beachte, daß das Doppelkreuz-Zeichen, "#", in Python zur Markierung des Beginns eines Kommentars verwendet wird.


2.2.3 Die Datei für den interaktiven Interpreter-Start

Wenn Sie Python interaktiv verwenden, ist es oftmals nützlich, einige Standard-Kommandos jedes mal auszuführen, wenn der Interpreter gestartet wird. Man kann dies erreichen, indem eine Umgebungsvariable namens $PYTHONSTARTUP auf den Namen einer Datei mit Ihren Startkommandos gesetzt wird. Dies ist ähnlich zur .profile-Datei in Unix-Shells.

Diese Datei wird nur in interaktiven Sitzungen gelesen, nicht wenn Python Kommandos aus einem Skript liest und auch nicht, wenn /dev/tty als explizite Quelle von Kommandos angegeben wird (was einer interaktiven Sitzung gleichkäme). Die Datei wird im gleichen Namensraum ausgeführt, in dem auch interaktive Kommandos ausgeführt werden, so daß Objekte, die es definiert oder importiert, ohne Qualifizierung in der interaktiven Sitzung verwendet werden können (Namensräume und Qualifizierung werden später noch erklärt).

Falls Sie eine weitere Start-Datei vom aktuellen Verzeichnis lesen wollen, können Sie dies in der globalen Start-Datei programmieren, z.B. "execfile('.pythonrc.py')". Wenn Sie die Start-Datei in einem Skript verwenden wollen, müssen Sie dies im Skript explizit tun:


import os
if os.environ.get('PYTHONSTARTUP') \
   and os.path.isfile(os.environ['PYTHONSTARTUP']):
    execfile(os.environ['PYTHONSTARTUP'])



Fußnoten

... Prompt.2.1
Ein Problem mit dem GNU Readline-Paket kann dies verhindern.


Send comments to python-docs@python.org.