#!/usr/bin/env python3 #=================================================================================== # # FILE: simple-edit.py # # USAGE: simple-edit.py filename # # DESCRIPTION: Edit the text file 'filename'. # simple-edit is a line editor. It supports editing single lines # by entering the line number. Supported commands are 'show', # 'wq' (write and quit) and 'q!' (quit without saving). # # OPTIONS: none # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: Hans-Georg Esser (hge), esser.hans-georg@fh-swf.de # COMPANY: FH Suedwestfalen, Iserlohn # VERSION: 1.0 # CREATED: 06.10.2017 - 20:39 # REVISION: 06.10.2017 - 20:39 #=================================================================================== from sys import argv, exit script = argv[0] # Name der Skriptdatei, entspricht $0 def show (): for i in range (lines): print ("%3d: %s" % (i, zeilen[i]), end="") def fehler (nachricht): print ("%s: Fehler: %s" % (script, nachricht)) exit () # Test auf Fehler: Kein Dateiname (oder zu viele Argumente) if len (argv) != 2: fehler ("Aufruf: %s filename." % script) filename = argv[1] # Parameter; entspricht $1 # Test auf Fehler: Datei nicht vorhanden try: datei = open (filename, "r") except: fehler ("Datei %s existiert nicht." % filename) zeilen = datei.readlines () # Zeilen einlesen lines = len (zeilen) # Anzahl Zeilen show () while True: print ("Zeilennummer oder 'wq', 'q!' oder 'show' eingeben: ", end="") linenumber = input () if linenumber == "": continue if linenumber == "q!": break if linenumber == "wq": output = open ("tmp.out", "w") output.writelines (zeilen) output.close () break if linenumber == "show": show () continue # Versuchen, Eingabe in Zahl zu konvertieren try: linenumber = int (linenumber) except: print ("Fehler: Weder Zeilennummer noch Editor-Kommando") continue # Pruefen, ob Zeilennummer gueltig if linenumber > lines: print ("Fehler: Zeile %d existiert nicht." % linenumber) continue print ("Ersetze Zeile %d" % linenumber) print ("%3d: %s" % (linenumber, zeilen[linenumber]), end="") print ("%3d: " % linenumber, end="") zeilen[linenumber] = input () + "\n" # braucht extra \n print ("Zeile %d ersetzt." % linenumber)