Seite 1 von 1

Werte rückwärts ausgeben

Verfasst: Dienstag 9. Februar 2010, 13:15
von mit
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

Verfasst: Dienstag 9. Februar 2010, 13:20
von Hyperion

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 ;-)

Verfasst: Mittwoch 10. Februar 2010, 12:56
von mit
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?

Verfasst: Mittwoch 10. Februar 2010, 13:17
von marlob
Wie Hyperion schon erwähnte
subprocess

Verfasst: Samstag 13. Februar 2010, 03:56
von mit
Danke werde es ausprobieren.

Verfasst: Samstag 13. Februar 2010, 12:28
von sma
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