Python 3 - 按行号

时间:2018-02-12 21:57:49

标签: python text-files line handle file-writing

标题几乎说明了一切:我花了一天时间来弄清楚如何通过输入其行号来从大文本文件中获取单行文本,但没有成功。到目前为止,似乎人们在网上讨论的唯一解决方案是将整个文本文件加载到一个列表中,但它实在太大了。 我正在使用的.txt文件的结构实际上只是一个大的网址列表,每行一个。

我尝试过使用handle.readline(),但这并没有帮助确定特定的行。因为文件太大,我无法使用handle.readlines()方法将其所有行加载到内存中,所以这也是一个半身像。我尝试使用在线找到的for index,line in enumerate(handle)来编写函数,但奇怪地返回None。任何帮助表示赞赏。

编辑:下面的一些代码不起作用:

fh = open("file.txt","a+")

def offsetfunc(handle,lineNum):
    line_offset = []
    offset = 0
    for line in handle:
        line_offset.append(offset)
        offset += len(line)
    handle.seek(line_offset[lineNum-1],0)

offsetfunc(fh,1)        #Returns IndexError
print(fh.readline())    #Presumably would be viable, if the previous statement worked?

此外,使用linecache技术将文件加载到内存中,所以是的,这也是不可行的。

1 个答案:

答案 0 :(得分:1)

这个程序可能会做你想要的:

def fetch_one_line(filename, linenumber):
    with open(filename) as handle:
        for n, line in enumerate(handle, 1):
            if n == linenumber:
                return line
    print("OOPS! There aren't enough lines in the file")
    return None

my_line = fetch_one_line('input.txt', 5)
print(repr(my_line))