Чтение только первой строки файла? - PullRequest
169 голосов
/ 15 декабря 2009

Как бы вы получили только первую строку файла в виде строки с Python?

Ответы [ 9 ]

290 голосов
/ 15 декабря 2009

Используйте метод .readline() ( Документы Python 2 , Документы Python 3 ):

with open('myfile.txt') as f:
    first_line = f.readline()

Некоторые заметки:

  1. Как отмечается в документе, если только это не единственная строка в файле, строка, возвращаемая из f.readline(), будет содержать завершающий символ новой строки. Вы можете использовать f.readline().strip() вместо удаления новой строки.
  2. Оператор with автоматически закрывает файл снова, когда заканчивается блок.
  3. Оператор with работает только в Python 2.5 и выше, а в Python 2.5 вам нужно использовать from __future__ import with_statement
  4. В Python 3 вы должны указать кодировку файла для открываемого файла. Подробнее ...
19 голосов
/ 15 декабря 2009
infile = open('filename.txt', 'r')
firstLine = infile.readline()
14 голосов
/ 15 декабря 2009
fline=open("myfile").readline().rstrip()
8 голосов
/ 15 декабря 2009

Это должно сделать это:

f = open('myfile.txt')
first = f.readline()
7 голосов
/ 17 ноября 2012
first_line = next(open(filename))
7 голосов
/ 15 декабря 2009

Чтобы вернуться к началу открытого файла и затем вернуть первую строку, сделайте следующее:

my_file.seek(0)
first_line = my_file.readline()
6 голосов
/ 15 декабря 2009

Здесь много других ответов, но чтобы ответить точно на вопрос, который вы задали (до того, как @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 в конце строки, но я предполагаю, что вы все равно не хотите его (и однострочный файл может даже не иметь его). Также обратите внимание, что, хотя он довольно короткий и быстрый, он делает копию данных, поэтому для действительно большого куска памяти вы можете не считать его «эффективным». Как всегда, это зависит ...

0 голосов
/ 17 декабря 2018

Solution1:

with open('input_file.txt') as input_file:
    lines=input_file.readlines()
    for line_no, line in enumerate(lines):
        if line_no == 0:
            print(line)
            break
  • lines содержит все строки из input_file.txt
  • line_no даст номер строки из файлов
  • если line_no равен 0, первая строка будет напечатана как индекс начинается с 0
  • Аналогично, если вы хотите вторую строку, вы можете написать if line_no==1

Решение 2:

with open('input_file.txt') as input_file:
    lines=input_file.readlines()
    first_line=lines[0]
    print(first_line)
  • lines[0] - первая строка.
  • Аналогично, lines[1] - вторая строка

Решение 3:

Печать первых N строк. Замените N на любое число. Если вы хотите первую строку, то N = 1

from itertools import islice

with open('my_file.txt','r') as my_file:
    head = list(islice(my_file, N))
    print(head)

Это эквивалентный код команды unix head

Решение 4:

with open('input.txt', 'r') as fin:
    head, tail = fin.read().split('\n', 1)
    print(head)
    #print(tail)
0 голосов
/ 14 июня 2015
f1 = open("input1.txt", "r")
print(f1.readline())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...