Python:从文本文件中打印特定范围的行

时间:2017-03-06 02:37:10

标签: python python-2.7

我在目录中有几个文本文件。在每个文本文件中,它们都有这些行

  

***************错误摘要**********************

     

第1行

     

第2行

     

第n行

     

====================================

每个文本文件都没有相同数量的行(n)。例如,file1有3行,file2有1行,依此类推。我要做的是从第1行打印到列表中的第n行。每个文件都有自己的列表。

这是我的第一个代码

target = "Error Summary"

for file in files: 
    content = open(os.path.join(subdir, file),'r')
    for line in content:
    if target in line:
        chunk = ''.join(islice(content,50))
        chunk = chunk.split("==", 1)[0]
        chunk_list.append(chunk)

但是这些会打扰我的下一个代码,因为指针已经转到第51行。所以我推出了新代码

for line in content:
    if target in line:
        for i in range(50):
            chunk = content.next()
            if chunk.startswith("=="):
                break
            chunck_list.append(chunk)

这看起来不错。但是,所有行都打印在一个列表中。有人可以帮忙吗?

--------------------------- EDIT ------------------- ----------

我已经获得了代码

for line in content:
   if target in line:
      for line in content:
         if line.startswith("=="):
            break
         chunk_list.append(line)

但输出在一个列表中压缩。我想要的是list1中File1的输出,list2中File2的输出,依此类推。有人请帮帮我..

1 个答案:

答案 0 :(得分:1)

我建议使用linecacheHere是该库的文档。你做了类似的事情:

>>> import linecache
>>> linecache.getline(FILENAME, LINENUMBER)

将文件存储在内存中会很方便,但请记住,如果您有一百万个文件需要阅读,这不会缩放。