【发布时间】:2010-12-26 15:20:17
【问题描述】:
如何使用 Python 仅将文件的第一行作为字符串获取?
【问题讨论】:
-
如果你已经读过文件(“读入文件后”),那么你已经读过第一行! (假设至少有一行。)
-
请注意,问题as now worded 与最初的含义不同。有些答案现在看起来很傻,因为它们考虑到了“读入文件后”部分(已被删除)。
如何使用 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
【讨论】:
mod_wsgi)。
first_line = f.readline().strip(),因为如果文件中有不止一行,则该行将包含换行符
infile = open('filename.txt', 'r')
firstLine = infile.readline()
【讨论】:
with 更好。
fline=open("myfile").readline().rstrip()
【讨论】:
rstrip() 删除了换行符。
要返回打开文件的开头然后返回第一行,请执行以下操作:
my_file.seek(0)
first_line = my_file.readline()
【讨论】:
first_line = next(open(filename))
【讨论】:
应该这样做:
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()。
如果你想阅读file.txt
line1 helloworld
import linecache
# read first line
print(linecache.getline('file.txt'), 1)
>helloworld
【讨论】:
f1 = open("input1.txt", "r")
print(f1.readline())
【讨论】: