python打印文件中某个字符串的前几行

#!/usr/bin/python3

# -*- coding: UTF-8 -*-

import linecache #专门支持读取大文件,而且支持行式读取的函数库

 

#打印某个字符串的前几行(不包含这个字符所在的行)

def List_h(List,filename,num):

    File = open(filename,"r")

    for nums,value in enumerate(File): #enumerate 遍历行号与这一行的内容,但unms的行号是实际行号减1,可以使用enumerate(file,1) 则行号从1 开始

        if str(List) in value:

            for ss in range(nums-num+1,nums+2,): ##ss为unms的行号减去变量 num 加1,到unms的行号加2(因为unms的行号是实际行号减1)

                print (linecache.getline(filename,ss).strip()) #打印 变量filename 文件中 ss 行的内容

        print ("==================") #如果存在多行则用====隔开

    File.close()

    return

#打印nfs 文件中30001这个字符的前5行

List_h(30001,'nfs',5)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Python 文件操作函数和字符串操作函数来实现这个功能。 具体步骤如下: 1. 打开文件,使用 `open()` 函数。 2. 逐读取文件内容,使用 `readline()` 函数。 3. 判断当是否包含特定的字符串,使用字符串的 `in` 操作符。 4. 如果包含特定的字符串,则将当及其后面的几输出或保存到一个新的文件。 下面是一个示例代码,假设你要取出包含字符串 `"hello"` 的及其后面的 2 : ```python with open("input.txt", "r") as input_file, open("output.txt", "w") as output_file: lines = input_file.readlines() for i, line in enumerate(lines): if "hello" in line: output_file.write(line) for j in range(i+1, min(i+3, len(lines))): output_file.write(lines[j]) ``` 在上述代码,我们用 `with open() as` 语句打开了一个输入文件和一个输出文件,并分别用 `input_file` 和 `output_file` 变量引用它们。接着我们使用 `readlines()` 函数读取了所有,并用 `enumerate()` 函数同时获得号和内容。然后我们判断当是否包含字符串 `"hello"`,如果包含,就将该及其后面的两写入输出文件。 需要注意的是,上述代码的 `min(i+3, len(lines))` 是为了防止数组越界。如果当已经是最后一,则 `lines[j]` 会出现 `IndexError` 异常。通过取 `i+3` 和 `len(lines)` 的最小值,可以保证不会出现数组越界的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值