Как с помощью Python получить только первую строку файла в виде строки?
Читать только первую строку файла?
- Если вы уже прочитали файл (после прочтения файла), вы уже прочитали первую строку! (Предполагая, что есть хотя бы одна строка.) 15.12.2009
- Обратите внимание, что вопрос в нынешней формулировке имеет другое значение, чем изначально. Некоторые ответы теперь выглядят глупо, поскольку они учитывают после чтения часть файла (которая была удалена). 03.08.2016
Ответы:
Используйте метод .readline()
(документы Python 2, документы Python 3):
with open('myfile.txt') as f:
first_line = f.readline()
Некоторые примечания:
- Как отмечено в документации, если это не единственная строка в файле, строка, возвращаемая из
f.readline()
, будет содержать завершающую новую строку. Вместо этого вы можете использоватьf.readline().strip()
, чтобы удалить новую строку. - Оператор
with
автоматически закрывает файл снова по завершении блока. - Оператор
with
работает только в Python 2.5 и выше, а в Python 2.5 необходимо использоватьfrom __future__ import with_statement
- В Python 3 вы должны указать кодировку файла для открываемого файла. Подробнее…
Чтобы вернуться к началу открытого файла и затем вернуть первую строку, сделайте следующее:
my_file.seek(0)
first_line = my_file.readline()
Это должно сделать это:
f = open('myfile.txt')
first = f.readline()
Здесь много других ответов, но чтобы ответить точно на вопрос, который вы задали (до того, как @MarkAmery пошел и отредактировал исходный вопрос и изменил значение):
>>> 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]
Другими словами, если вы уже прочитали файл (как вы сказали) и у вас есть большой блок данных в памяти, то для эффективного получения из него первой строки выполните split () для символа новой строки один раз только и возьмите первый элемент из результирующего списка.
Обратите внимание, что это не включает символ \n
в конце строки, но я предполагаю, что он вам все равно не нужен (а однострочный файл может даже не иметь его). Также обратите внимание, что, хотя он довольно короткий и быстрый, он делает копию данных, поэтому для действительно большого блока памяти вы можете не считать его «эффективным». Как всегда, это зависит от ...
.read()
. 17.10.2016 with
лучше. 21.12.2015 rstrip()
удаляет символ новой строки. 27.10.2014
mod_wsgi
). 24.10.2016