只读文件的第一行?

时间:2009-12-15 00:00:49

标签: python file

如何只使用Python将文件的第一行作为字符串?

9 个答案:

答案 0 :(得分:285)

使用.readline()方法(Python 2 docsPython 3 docs):

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中,您应该为打开的文件指定文件编码。 Read more...

答案 1 :(得分:19)

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

答案 2 :(得分:14)

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

答案 3 :(得分:8)

这应该这样做:

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

答案 4 :(得分:7)

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

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

答案 5 :(得分:7)

first_line = next(open(filename))

答案 6 :(得分:6)

这里有很多其他答案,但要回答正好你提出的问题(在@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字符,但我假设您仍然不想要它(并且单行文件甚至可能没有)。另请注意,尽管它非常简短快速,但它确实会复制数据,因此对于非常大的内存块,您可能不会认为它“高效”。一如既往,这取决于......

答案 7 :(得分:-1)

解决方案1:

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)

答案 8 :(得分:-12)

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