Teil 29 : Shellskriptprogrammierung - Lese

Werbung
Teil 29 : Shellskriptprogrammierung - Lese- und Schreibzugriffe mit Python
Aufgabenstellung:
Eine (Text-)Datei soll geöffnet und ihr Inhalt angezeigt werden. Anschließend wird eine Möglichkeit der zeilenweisen Texteingabe ans Dateiende
angeboten.
Werkzeug:
python
Nach der britischen Komikertruppe Monty Python benannte, objektorientierte Programmiersprache
Analyse einer möglichen Lösung:
#!/usr/bin/env python
import os, sys
sys.stdout.write(os.popen('clear').read())
DATEI = raw_input("Gib den Namen der zu bearbeitende Datei an:\n")
fobj = open(DATEI, "a+")
print "Der folgende Text steht bereits in der Datei " + DATEI
for line in fobj:
print line
TEXTEINGABE = raw_input("Der eingegebene Text wird zeilenweise ans Ende der Datei " + DATEI + " geschrieben:\n")
fobj.write(TEXTEINGABE + "\n")
fobj.close()
sys.stdout.write(os.popen('clear').read())
1. Erstelle mit einem einfachen Texteditor die folgende Textdatei und speichere sie unter schreib.py .
2. Mache Sie anschließend mit dem Kommanodzeilen-Befehl chmod u+x schreib.py ausführbar.
3. Lege eine leere Textdatei datei.txt an.
4. Starte nun von der Kommandozeile dieses selbst erstellte Programm mit dem Befehl ./schreib.py
5. Gib nun eine beliebige Textzeile ein. Schreibe mit Hilfe des Programms insgesamt fünf Textzeilen in die Datei datei.txt.
6. Welche anderen Möglichkeiten kennst Du bei anderen Programmiersprachen zum Einlesen von der Tastatur an Stelle von raw_input ?
7. Nenne die hier verwendeten Variablen.
8. Welche Aufgabe haben die Methoden open() und close() ?
9. An Stelle der hier gewählten Einleitungs- / Kopfzeile wäre auch #!/usr/bin/python möglich . Warum ist die hier gewählte Variante besser?
10. Statt der Methode write() könnte man auch schreiben: print >> fobj, TEXTEINGABE
Für Fortgeschrittene: Vergleiche dies mit der Ein- und Ausgabeumlenkung der Shell!
11. Welche Aufgabe hat die Zeile import os, sys in Kombination mit sys.stdout.write(os.popen('clear').read()) ?
Herunterladen