你如何在Python中阅读文本文件的特定行?

时间:2011-09-23 00:25:14

标签: python line

我在使用Python阅读文本文件的整个特定行时遇到问题。我目前有这个:

load_profile = open('users/file.txt', "r")
read_it = load_profile.readline(1)
print read_it

当然这只会读取第一行的一个字节,这不是我想要的。我也试过谷歌但没找到任何东西。

4 个答案:

答案 0 :(得分:14)

这条线的条件是什么?它在某个指数?它是否包含某个字符串?它与正则表达式匹配吗?

此代码将根据字符串匹配文件中的单行:

load_profile = open('users/file.txt', "r")
read_it = load_profile.read()
myLine = ""
for line in read_it.splitlines():
    if line == "This is the line I am looking for":
        myLine = line
        break
print myLine

这将为您提供文件的第一行(还有其他几种方法可以执行此操作):

load_profile = open('users/file.txt', "r")
read_it = load_profile.read().splitlines()[0]
print read_it

或者:

load_profile = open('users/file.txt', "r")
read_it = load_profile.readline()
print read_it

查看Python File Objects Docs

  

<强> file.readline([大小])

     

从文件中读取整行。落后   换行符保留在字符串中(但在文件时可能不存在)   以不完整的行结束)。 [6]如果size参数存在并且   非负数,它是最大字节数(包括尾随数)   换行符)可能会返回不完整的行。当大小不是0时,   仅在立即遇到EOF时才返回空字符串。

     

注意与stdio的fgets()不同,返回的字符串包含null   字符('\ 0'),如果它们出现在输入中。

     

<强> file.readlines([sizehint])

     

使用readline()读取EOF并返回   包含这样读取的行的列表。如果是可选的sizehint   论证存在,而不是读到EOF,整行   总计近似sizehint字节(可能在四舍五入后   读取内部缓冲区大小)。实现文件类的对象   如果无法实现,接口可以选择忽略sizehint,   或无法有效实施。


编辑:

回答你的评论诺亚:

load_profile = open('users/file.txt', "r")
read_it = load_profile.read()
myLines = []
for line in read_it.splitlines():
    # if line.startswith("Start of line..."):
    # if line.endswith("...line End."):
    # if line.find("SUBSTRING") > -1:
    if line == "This is the line I am looking for":
        myLines.append(line)
print myLines

答案 1 :(得分:2)

load_profile.readline(1)

具体说是以1字节为上限。它并不意味着1行。试试

read_it = load_profile.readline()

答案 2 :(得分:2)

您可以使用Python的内置模块linecache

  import linecache
  line = linecache.getline(filepath,linenumber)

答案 3 :(得分:1)

def readline_number_x(file,x):
    for index,line in enumerate(iter(file)):
        if index+1 == x: return line

    return None

f = open('filename')
x = 3
line_number_x = readline_number_x(f,x) #This will return the third line