Hallo
Vielen Dank für die vielen antworten, bin grad schon ab rumprobieren
Gruß Teabag
Letzte zeile einer Textdatei printen lassen?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Stimmt.BlackJack hat geschrieben:Hat doch keiner wirklich gemacht. Und wenn gerold's Lösung abgegeben wird, dann fragt der Lehrer sicher nach. Falls der OP dann erklären kann, was der Code genau macht, hat er IMHO was gelernt und genügend eigene Leistung gezeigt.
Ich gebe zu, im habe mir eine Lösung ähnlich zu gerolds im Kopf rumgehen lassen, also eine Datei von "hinten" nach Newlines abzusuchen, aber letztenlich fand ich, dass es sich nicht ohnt sowas zu implementieren. Zumindest nicht bei der Größe der meisten Dateien, sofern das überhaupt Vorteile bringt.
Man könnte es aber auch modifizieren, dass es genau einen Block am Stück liest und diesen Durchsucht. Wobei man dann wissen müsste wie groß so ein Block ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 188
- Registriert: Donnerstag 20. Juli 2006, 20:46
- Wohnort: Wien
- Kontaktdaten:
Ich hab warscheinlich die feigste Lösung
lgherby
Code: Alles auswählen
import commands
meinedatei = "/var/log/messages"
meinezeile = commands.getoutput("tail -n 1 %s" % meinedatei)
print meinezeile
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo BlackJack!BlackJack hat geschrieben:Alles was nicht in der Doku und in `__all__` enthalten ist, würde ich als Implementationsdetail betrachten.Code: Alles auswählen
__all__ = ["getline", "clearcache", "checkcache"]
Ich habe mir "linecache.py" durchgelesen und habe das Gefühl, dass einfach nur vergessen wurde, "getlines" in "__all__" rein zu schreiben. Vielleicht hat der Programmierer auch nur gedacht, dass "getlines" niemand brauchen wird. Ich sehe hier aber keinen Grund, weshalb man es nicht verwenden sollte. :K Habe ich etwas übersehen?
Außerdem finde ich, dass "getline" komisch ist. Warum wird nicht 0 als erste Zeilennummer verwendet? Warum wird nicht zugelassen, dass auf die Liste mit den Zeilen per "slicing" zugegriffen werden kann? Das ganze Modul fühlt sich irgendwie komisch an.
Edit:
Wie ich aus der History ersehe, hat "montanaro" erst neun Jahre nach Erstellen des Moduls "__all__" nachgetragen. Ich glaube also nicht, dass es im Sinne des Erfinders ist, dass "getlines" nicht benutzt werden soll.
Siehe: http://svn.python.org/view/python/trunk ... 2&view=log
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Liegt wohl daran, dass es eine eher interne Sache ist, die vor allem für die Kontextzeilen bei Tracebacks benötigt wird...gerold hat geschrieben:Das ganze Modul fühlt sich irgendwie komisch an.
Feel free... ich sehe den Sinn nicht so ganz. getlines kann man auch flott selbst schreiben:jens hat geschrieben:Wie wäre es mit einem Bug-Report wegen "linecache.py" ?
Code: Alles auswählen
def getlines(filename):
# Dateien werden doch hoffentlich beim Verlassen des Blocks geschlossen oder?
return open(filename).readlines()
Um ehrlich zu sein, ich würde die letzte Zeile einer Datei in einer richtigen Anwendung auch nicht per linecache extrahieren...