我在目录中有几个文本文件。在每个文本文件中,它们都有这些行
***************错误摘要**********************
第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的输出,依此类推。有人请帮帮我..
答案 0 :(得分:1)
我建议使用linecache
。 Here是该库的文档。你做了类似的事情:
>>> import linecache
>>> linecache.getline(FILENAME, LINENUMBER)
将文件存储在内存中会很方便,但请记住,如果您有一百万个文件需要阅读,这不会缩放。