2013-08-24 13 views

Odpowiedz

31

Zastosowanie itertools.islice:

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

+1 najlepszy sposób na zrobienie tego. –

+0

@AshwiniChaudhary Dlaczego jest to najlepszy sposób? Ponieważ 'islice' używa wyrażeń generatora? – thefourtheye

+1

@thefourtheye 'islice' to szybki i pythonic sposób na pobranie plastra z iteratora. Wykonuje pętle ponad iteratorem, ale dzieje się to wewnętrznie z prędkością C. –

3

Jeśli plik nie jest bardzo duży:

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

Jeśli plik jest ogromny, załaduje wszystko do pamięci. –

4

Jon's answer jest zdecydowanie bardziej pythonic i czyste podejście.


Alternatywnie, można użyć enumerate():

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

uwaga, że ​​będzie to pętla na wszystkich liniach w pliku. Lepiej przerwać pętlę po 15 linii, na przykład:

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

myślę, że można po prostu czytać wiersze i wziąć te trzeba

Na przykład:

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

teraz dane [1] będą drugorzędne, a dane [14] będą 15.

Możesz umieścić je w zmiennej i to jest

+2

Otwórz pliki w bloku 'with'. –

Powiązane problemy