python查找关键字在目录的某些文件哪个位置 行数_用python2.7.9 写个小程序搜索某个目录下行有某关键字...

这个Python脚本用于查找指定目录下所有.txt文件中包含特定关键字的行及位置。用户输入关键字和是否显示详细信息,程序将输出关键字出现的文件名、行数和位置。
摘要由CSDN通过智能技术生成

# -*- coding: utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

import os

def print_pos(key_dict):

keys = key_dict.keys()

keys = sorted(keys) # 由于字典是无序的,我们这里对行数进行排序

for each_key in keys:

print('关键字出现在第 %s 行,第 %s 个位置。' % (each_key, str(key_dict[each_key])))

def pos_in_line(line, key):

pos = []

begin = line.find(key)

while begin != -1:

pos.append(begin + 1) # 用户的角度是从1开始数

begin = line.find(key, begin + 1) # 从下一个位置继续查找

return pos

def search_in_file(file_name, key):

f = open(file_name,'r')

count = 0 # 记录行数

key_dict = dict() # 字典,用户存放key所在具体行数对应具体位置

for each_line in f:

count += 1

if key in each_line:

pos = pos_in_line(each_line, key) # key在每行对应的位置

key_dict[count] = pos

f.close()

return key_dict

def search_files(key, detail):

all_files = os.walk(os.getcwd())

txt_files = []

for i in all_files:

for each_file in i[2]:

if os.path.splitext(each_file)[1] == '.txt': # 根据后缀判断是否文本文件

each_file = os.path.join(i[0], each_file)

txt_files.append(each_file)

for each_txt_file in txt_files:

key_dict = search_in_file(each_txt_file, key)

if key_dict:

print '================================================================'

print '在文件【%s】中找到关键字【%s】' % (each_txt_file, key)

if detail in ['YES', 'Yes', 'yes']:

print_pos(key_dict)

key = raw_input('请将该脚本放于待查找的文件夹内,请输入关键字:')

detail = raw_input('请问是否需要打印关键字【%s】在文件中的具体位置(YES/NO):' % key)

search_files(key, detail)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值