【问题标题】:Python: Print specific range of line from text filePython:从文本文件中打印特定范围的行
【发布时间】:2017-03-06 13:45:26
【问题描述】:

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

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

第 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 的输出,list2 中 File2 的输出,依此类推。任何人请帮助我..

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

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

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

    将文件保存在内存中会很方便,但请记住,如果要读取一百万个文件,这将无法扩展。

    【讨论】:

    • 如果我们知道行数就可以了。就我而言,文本文件有数百行,目标可能位于文件 1 的顶部、文件 2 的底部和文件 3 的中间。有什么想法吗?
    • 您可以使用以下命令获取文件的行数:stackoverflow.com/questions/845058/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多