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