关于python:只读文件的第一行?

Read only the first line of a file?

如何使用python只得到文件的第一行作为字符串?


使用.readline()方法(python 2 docs,python 3 docs):

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

一些注释:

  • 如文档中所述,除非它是文件中的唯一一行,否则从f.readline()返回的字符串将包含一个尾随新行。您可能希望使用f.readline().strip()来删除换行符。
  • 当块结束时,with语句自动再次关闭文件。
  • with语句仅在python 2.5和更高版本中有效,而在python2.5中,您需要使用from __future__ import with_statement
  • 在python 3中,您应该为打开的文件指定文件编码。多读…

  • 1
    2
    infile = open('filename.txt', 'r')
    firstLine = infile.readline()


    1
    fline=open("myfile").readline().rstrip()


    应该这样做:

    1
    2
    f = open('myfile.txt')
    first = f.readline()

    1
    first_line = next(open(filename))


    要返回打开文件的开头,然后返回第一行,请执行以下操作:

    1
    2
    my_file.seek(0)
    first_line = my_file.readline()


    这里还有很多其他答案,但要准确回答您提出的问题(在@markamery去编辑原始问题并改变其含义之前):

    1
    2
    3
    4
    5
    >>> f = open('myfile.txt')
    >>> data = f.read()
    >>> # I'm assuming you had the above before asking the question
    >>> first_line = data.split('
    '
    , 1)[0]

    换句话说,如果您已经读取了文件(如您所说),并且在内存中有一大块数据,那么为了有效地从文件中获取第一行,只需对换行符执行split(),然后从结果列表中获取第一个元素。

    注意,这不包括行尾的
    字符,但我假设您无论如何都不想要它(而且一个单行文件甚至可能没有一个)。另外请注意,虽然它非常短和快速,但它确实会复制数据,因此对于一个真正大的内存块,您可能不认为它是"高效的"。一如既往,这取决于…


    解决方案1:

    1
    2
    3
    4
    5
    6
    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:

    1
    2
    3
    4
    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

    1
    2
    3
    4
    5
    from itertools import islice

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

    这是unix命令head的等效代码。

    解决方案4:

    1
    2
    3
    4
    5
    with open('input.txt', 'r') as fin:
        head, tail = fin.read().split('
    '
    , 1)
        print(head)
        #print(tail)

    1
    2
    f1 = open("input1.txt","r")
    print(f1.readline())