Mam plik tekstowy i muszę odczytać z wiersza sekund do 15 linii, w tym. Próbowałem niektórych metod, ale metoda nie działała dla mnie ... Byłbym szczęśliwy, gdyby ktoś mógł mi pomóc ... wielkie dzięki!Python odczytał plik tekstowy z drugiej linii do piętnastej
Odpowiedz
Zastosowanie itertools.islice
:
from itertools import islice
with open('filename') as fin:
for line in islice(fin, 1, 16):
print line
Jeśli plik nie jest bardzo duży:
with open('/path/to/file') as f:
print f.readlines()[1:15]
Jeśli plik jest ogromny, załaduje wszystko do pamięci. –
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
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
Otwórz pliki w bloku 'with'. –
+1 najlepszy sposób na zrobienie tego. –
@AshwiniChaudhary Dlaczego jest to najlepszy sposób? Ponieważ 'islice' używa wyrażeń generatora? – thefourtheye
@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. –