[英]Read only the first line of a file?
你如何只用Python的字符串获取文件的第一行?
使用.readline()
方法( Python 2 docs , Python 3 docs ):
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
infile = open('filename.txt', 'r')
firstLine = infile.readline()
fline=open("myfile").readline().rstrip()
这应该这样做:
f = open('myfile.txt')
first = f.readline()
要返回打开文件的开头然后返回第一行,请执行以下操作:
my_file.seek(0)
first_line = my_file.readline()
first_line = next(open(filename))
这里有很多其他答案,但要准确回答你提出的问题(在@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(), only,并从结果列表中获取第一个元素。
请注意,这不包括行末尾的\\n
字符,但我假设您仍然不想要它(并且单行文件可能甚至没有)。 另请注意,尽管它非常简短快速,但它确实会复制数据,因此对于非常大的内存块,您可能不会认为它“高效”。 一如既往,这取决于......
解决方法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)
f1 = open("input1.txt", "r")
print(f1.readline())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.