Jak uzyskasz tylko pierwszy wiersz pliku jako ciąg znaków w Pythonie?
Jak uzyskasz tylko pierwszy wiersz pliku jako ciąg znaków w Pythonie?
Odpowiedzi:
Użyj .readline()
metody ( dokumenty w języku Python 2, dokumenty w języku Python 3 ):
with open('myfile.txt') as f:
first_line = f.readline()
Niektóre uwagi:
f.readline()
będzie zawierać końcowy znak nowej linii. Zamiast tego możesz użyć f.readline().strip()
do usunięcia nowej linii.with
Oświadczenie automatycznie zamyka plik ponownie, gdy końce bloku.with
Oświadczenie działa tylko w Pythonie 2.5 iw górę, iw Pythonie 2.5 trzeba użyćfrom __future__ import with_statement
mod_wsgi
).
infile = open('filename.txt', 'r')
firstLine = infile.readline()
with
jest lepszy.
fline=open("myfile").readline().rstrip()
rstrip()
usuwa znak nowej linii.
To powinno to zrobić:
f = open('myfile.txt')
first = f.readline()
Aby wrócić do początku otwartego pliku, a następnie zwrócić pierwszy wiersz, wykonaj następujące czynności:
my_file.seek(0)
first_line = my_file.readline()
Wiele innych odpowiedzi tutaj, ale aby dokładnie odpowiedzieć na zadane pytanie (zanim @MarkAmery poszedł i zredagował oryginalne pytanie i zmienił znaczenie):
>>> f = open('myfile.txt')
>>> data = f.read()
>>> # I'm assuming you had the above before asking the question
>>> first_line = data.split('\n', 1)[0]
Innymi słowy, jeśli już czytałeś plik (jak powiedziałeś) i masz duży blok danych w pamięci, a następnie, aby efektywnie uzyskać pierwszy wiersz, wykonaj split () na znaku nowej linii, raz tylko i weź pierwszy element z wynikowej listy.
Zauważ, że nie obejmuje to \n
znaku na końcu linii, ale zakładam, że i tak go nie chcesz (a plik jednowierszowy może nawet go nie mieć). Zauważ też, że chociaż jest dość krótki i szybki, robi kopię danych, więc w przypadku naprawdę dużej kropli pamięci możesz nie uznać go za „wydajny”. Jak zawsze zależy ...
.read()
należy to najpierw wywołać.
f1 = open("input1.txt", "r")
print(f1.readline())