2013-08-24 14 views

Antwort

31

Verwendung itertools.islice:

from itertools import islice 
with open('filename') as fin: 
    for line in islice(fin, 1, 16): 
     print line 
+1

+1 besten Weg, dies zu tun. –

+0

@AshwiniChaudhary Warum ist es der beste Weg? Weil 'islice' Generatorausdrücke verwendet? – thefourtheye

+1

@thefourtheye 'islice' ist eine schnelle und pythische Methode, um ein Stück von einem Iterator zu erhalten. Es macht Schleifen über den Iterator, aber das geschieht intern bei C-Geschwindigkeit. –

3

Wenn die Datei nicht sehr groß ist:

with open('/path/to/file') as f: 
    print f.readlines()[1:15] 
+7

Wenn die Datei sehr groß ist, wird alles in den Speicher geladen. –

4

Jon's answer ist auf jeden Fall eine pythonic und sauber Ansatz.


Alternativ können Sie enumerate() verwenden:

with open("file", 'r') as f: 
    print [x for i, x in enumerate(f) if 1 <= i <= 15] 

Beachten Sie, dass dieser Wille Schleife über alle Zeilen in einer Datei. Es ist besser, die Schleife nach dem 15. Linie zu brechen, wie folgt aus:

with open("file", 'r') as f: 
    for i, x in enumerate(f): 
     if 1 <= i <= 15: 
      print x 
     elif i > 15: 
      break 
1

Ich denke, man kann nur die Zeilen lesen und nehmen Sie die, die Sie

benötigen

Zum Beispiel:

file = open("a.txt", "r") 
data = file.readlines() 

jetzt Daten [1] werden zweite Zeile und Daten [14] werden 15 sein.

Sie können sie in eine Variable setzen und das ist es

+2

Öffnen Sie Dateien in einem 'mit'-Block. –