Werte rückwärts ausgeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Hallo,
der folgende Code gibt alle Werte rückwärts aus.

Code: Alles auswählen

import os

l = os.popen("ls").readlines()
for i in reversed(l):
        print i
Wie könnte man nur die letzten fünf Zeilen ausgeben?

Oder gibt eine einfachere Methode um aus der Lste l nur die Letzen fünf Zeilen ausgeben?

Viele Grüße
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Code: Alles auswählen

In [33]: l = range(10)

In [34]: l
Out[34]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [36]: l[-5:]
Out[36]: [5, 6, 7, 8, 9]
Außerdem willst Du das subprocess Modul verwenden für System-Calls ;-)

Und für ls brauchst Du das eh nicht, da es ja os.listdir() gibt ;-)
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Danke l[-5:] funktioniert.

Ls war nur ein Test Beispiel mit dem es prima funktioniert hat, aber ich ein natives Programm der zwar in Console alles ausgibt, aber popen liefert eine leere Liste.

Gibt es etwas anderes als popen?
marlob
User
Beiträge: 51
Registriert: Mittwoch 23. August 2006, 20:13

Wie Hyperion schon erwähnte
subprocess
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Danke werde es ausprobieren.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Es ist relativ ineffizient, zunächst einen theoretisch beliebig große Menge an Zeilen in eine Liste zu packen, nur um dann die letzten 5 Zeilen zu finden. Besser ist es z.B. so:

Code: Alles auswählen

class list5(list):
    def append(self, e):
        while len(self) > 4:
            del self[0]
        return super(list5, self).append(e)

x = list5()
for i in range(13):
    x.append(i)
    print(x)
Stefan
Antworten