2013-08-24 11 views

risposta

31

Uso itertools.islice:

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

+1 modo migliore per farlo. –

+0

@AshwiniChaudhary Perché è il modo migliore? Perché 'islice' usa le espressioni del generatore? – thefourtheye

+1

@thefourtheye 'islice' è un modo veloce e pignolo per ottenere una porzione da un iteratore, esegue loop sull'iteratore ma ciò avviene internamente alla velocità C. –

3

Se il file non è molto grande:

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

Se il file è enorme, questo caricherà tutto in memoria. –

4

Jon's answer è sicuramente un approccio più divinatorio e pulito.


In alternativa, è possibile utilizzare enumerate():

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

Nota, che questo ciclo volontà su tutte le righe di un file. E 'meglio per rompere il ciclo dopo la linea 15, in questo modo:

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

Penso che si può solo leggere le righe e prendere quelle che ti servono

Ad esempio:

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

ora dati [1] saranno seconda linea e dei dati [14] saranno 15

si possono mettere in una variabile e questo è tutto

+2

Apri file in un blocco 'with'. –

Problemi correlati