Wie würden Sie mit Python nur die erste Zeile einer Datei als Zeichenfolge erhalten?
Wie würden Sie mit Python nur die erste Zeile einer Datei als Zeichenfolge erhalten?
Antworten:
Verwenden Sie die .readline()Methode ( Python 2-Dokumente , Python 3-Dokumente ):
with open('myfile.txt') as f:
first_line = f.readline()
Einige Notizen:
f.readline()enthält die zurückgegebene Zeichenfolge, sofern dies nicht die einzige Zeile in der Datei ist, eine nachfolgende neue Zeile. Möglicherweise möchten Sie f.readline().strip()stattdessen die neue Zeile entfernen.withAnweisung schließt die Datei automatisch wieder, wenn der Block endet.withAnweisung funktioniert nur in Python 2.5 und höher, und in Python 2.5 müssen Sie verwendenfrom __future__ import with_statementmod_wsgi).
infile = open('filename.txt', 'r')
firstLine = infile.readline()
with ist besser.
fline=open("myfile").readline().rstrip()
rstrip()das Zeilenumbruchzeichen entfernt wird.
Dies sollte es tun:
f = open('myfile.txt')
first = f.readline()
Gehen Sie folgendermaßen vor, um zum Anfang einer geöffneten Datei zurückzukehren und dann die erste Zeile zurückzugeben:
my_file.seek(0)
first_line = my_file.readline()
Viele andere Antworten hier, aber um genau die Frage zu beantworten , die Sie gestellt haben (bevor @MarkAmery die ursprüngliche Frage bearbeitet und die Bedeutung geändert hat):
>>> 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]
Mit anderen Worten, wenn Sie die Datei bereits eingelesen haben (wie Sie sagten) und einen großen Datenblock im Speicher haben, führen Sie einmal einen split () für das Zeilenumbruchzeichen aus, um die erste Zeile effizient daraus zu erhalten nur und nehmen Sie das erste Element aus der resultierenden Liste.
Beachten Sie, dass das \nZeichen am Ende der Zeile nicht enthalten ist, aber ich gehe davon aus, dass Sie es sowieso nicht möchten (und eine einzeilige Datei möglicherweise nicht einmal eines hat). Beachten Sie auch, dass es zwar ziemlich kurz und schnell ist, aber eine Kopie der Daten erstellt, sodass Sie es für einen wirklich großen Speicherblock möglicherweise nicht als "effizient" betrachten. Wie immer kommt es darauf an ...
.read()dies zuerst aufgerufen werden muss.
f1 = open("input1.txt", "r")
print(f1.readline())