Python练习004

题目:编写一个程序,用户输入关键字,查找当前文件夹内(如果当前文件夹内包含文件夹,则进入文件夹继续搜索)所有含有该关键字的文本文件(.txt后缀),要求显示该文件所在的位置以及关键字在文件中的具体位置(第几行第几个字符)
代码:

import os
def pos_print(cnt, result, file):
    file_path = os.getcwd() + os.sep + file
    print("{}当前文件下含有{}有:".format(file_path, keywords))
    print("第%d行" % cnt)
    for each in result:
        print("第%d个字符后有%s" %(each, keywords), sep=' ')
    print('\n')
    
def Find(line):
    begin = line.find(keywords, 0)
    pos = []
    while begin != -1:
        print(begin)
        pos.append(begin + 1)
        begin = line.find(keywords, begin + 1)
    return pos
def search_in_file(file):
    with open(file) as f:
        cnt = 0
        for each_line in f:
            cnt += 1
            result = Find(each_line)
            if len(result) != 0:
                pos_print(cnt, result, file)
def search(current_dir):
    os.chdir(current_dir)
    for each_file in os.listdir(os.curdir):
        if os.path.splitext(each_file)[1] == '.txt':
            print(os.getcwd() + os.sep + each_file)
            search_in_file(each_file)
        if os.path.isdir(each_file):
            search(each_file)
            os.chdir(os.pardir)
keywords = input("请输入关键字:")
os.chdir("python练习")
search(os.curdir)

    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值