2017-03-06 82 views
0

我在目录中有几个文本文件。在每个文本文件中,他们都有这些行Python:从文本文件打印特定范围的行

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

线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) 

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

---------------------------编辑------------------ -----------

我得到的代码已经

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

但产量在一个列表被压缩。我想要的是在list1中输出File1,在列表2中输出File2,等等。任何人都请帮助我..

回答

1

我建议使用linecacheHere是库的文档。你这样做:

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

这将是很方便的在内存中的文件,但请记住,如果你有一万个文件读取,这将无法扩展。

+0

这工作,如果我们知道行数。在我的情况下,文本文件有数百行,目标可能位于文件1的顶端,文件2的底端以及文件3的中间。任何想法? – Miyek

+0

你可以使用下面的文件来计算行数:http://stackoverflow.com/questions/845058/how-to-get-line-count-cheaply-in-python – PseudoAj