Das sys
-Modul enthält systemspezifische Funktionalität.
Wir haben bereits gesehen, dass die Liste sys.argv
die Kommandozeilenparameter enthält.
Beispiel 14.1. Der Gebrauch von sys.argv (cat.py)
#!/usr/bin/python import sys def liesdatei(dateiname): '''Gib eine Datei auf der Standardausgabe aus.''' f = file(dateiname) while True: zeile = f.readline() if len(zeile) == 0: break print zeile, # beachten Sie das Komma f.close() # das Skript beginnt hier if len(sys.argv) < 2: print 'Es wurden keine Parameter uebergeben.' sys.exit() if sys.argv[1].startswith('--'): option = sys.argv[1][2:] # hole sys.argv[1], aber ohne die ersten beiden Zeichen if option == 'version': print 'Version 1.2' elif option == 'hilfe': print '''\ Dieses Programm gibt Dateien auf der Standardausgabe aus. Es kann eine beliebige Anzahl von Dateien angegeben werden. Als Optionen koennen angegeben werden: --version : Gibt die Versionsnummer aus --hilfe : Gibt diese Hilfe aus''' else: print 'Unbekannte Option.' sys.exit() else: for dateiname in sys.argv[1:]: liesdatei(dateiname)
$ python cat.py Es wurden keine Parameter uebergeben. $ python cat.py --hilfe Dieses Programm gibt Dateien auf der Standardausgabe aus. Es kann eine beliebige Anzahl von Dateien angegeben werden. Als Optionen koennen angegeben werden: --version : Gibt die Versionsnummer aus --hilfe : Gibt diese Hilfe aus $ python cat.py --version Version 1.2 $ python cat.py --unsinn Unbekannte Option. $ python cat.py gedicht.txt Programmieren mit Elan und die Arbeit wird getan, willst du Spass haben daran: Nimm Python!
Dieses Programm versucht, den cat-Befehl zu imitieren, der Linux/Unix-Benutzern wohlbekannt ist (er entspricht type unter DOS/Windows). Sie geben einfach den Namen einiger Textdateien an, und der Befehl gibt sie auf der Standardausgabe aus.
Wenn ein Python-Programm gestartet ist, d.h. nicht im interaktiven Modus,
dann gibt es stets mindestens einen Eintrag in der Liste sys.argv
,
nämlich den Namen des gerade laufenden Programms, der als sys.argv[0]
verfügbar ist, da Python von 0 anfängt zu zählen. Weitere eventuell vorhandene
Kommandozeilenparameter folgen auf diesen Eintrag.
Um das Programm benutzerfreundlich zu gestalten, haben wir bestimmte Optionen
vorgesehen, die der Benutzer angeben kann, um mehr über das Programm zu lernen.
Wir benutzen den ersten Parameter, um zu prüfen, ob unserem Programm irgendwelche
Optionen übergeben worden sind. Wenn die Option --version
benutzt wird, dann wird die Versionsnummer des Programms ausgegeben. Auf ähnliche
Weise geben wir ein wenig Erklärung über das Programm aus, wenn die Option
--help
angegeben wird. Wir benutzen die Funktion sys.exit
,
um das laufende Programm zu beenden. Wie immer erhalten Sie mit help(sys.exit)
weitere Einzelheiten hierzu.
Wenn keine Optionen angegeben wurden und dem Programm Dateinamen übergeben werden, dann gibt es einfach jede Zeile jeder Datei aus, eine nach der anderen, in der Reihenfolge, wie sie auf der Kommandozeile angegeben wurde.
Nebenbei bemerkt ist der Name cat eine Abkürzung für concatenate, was 'verketten' bedeutet und genau das bezeichnet, was dieses Programm tut - es kann eine Datei ausgeben, oder zwei oder mehr Dateien in der Ausgabe einander anfügen und so miteinander verketten.
Der String sys.version
liefert Informationen über die Python-Version,
die Sie installiert haben. Mit dem Tupel sys.version_info
kann man auf
einfache Weise Fallunterscheidungen für verschiedene Python-Versionen durchführen.
[swaroop@localhost code]$ python >>> import sys >>> sys.version '2.3.4 (#1, Oct 26 2004, 16:42:40) \n[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)]' >>> sys.version_info (2, 3, 4, 'final', 0)
Für erfahrene Programmierer sind weitere interessante Dinge im sys
-Modul
zu finden, wie sys.stdin
, sys.stdout
und
sys.stderr
, die den Datenströmen Standardeingabe, Standardausgabe
bzw. Standardfehlerausgabe Ihres Programms entsprechen.