python实现关键字检索_Python遍历目录和搜索文件中的关键字 | 学步园

2012-11-03 wcdj

遗留问题:如何处理中文

#-*- coding: gbk -*-

############

# 20121003 wcdj

# FindFilev0.1

# 遍历目录和搜索文件中的关键字

############

# import module

import os

import sys

import cmd

# test

#print os.listdir('e:\\')

print "Beg"

print sys.argv

class Tool(cmd.Cmd):

def __init__(self):

cmd.Cmd.__init__(self)# initialize the base class

self.pathname = "e://"

self.dirname = "test"

self.prompt = "(FindFile)>"

self.intro = '''FindFilev0.1 usage:

set # set dir and path parameters

export # export result file

find keyword # set finding keyword

? # help

exit # exit current program, or use Ctrl+D(UNIX)|Ctrl+Z(Dos/Windows)

'''

def help_exit(self):

print "quits the program"

def do_exit(self, line):

print "bye !"

sys.exit()

def help_set(self):

print "set parameter program used"

def do_set(self, choice):

print "default para is: "

print "pathname: '%s'" %self.pathname

print "dirname: '%s'" %self.dirname

choice = raw_input("Do you wanna change? y/n")

if choice == "y":

self.pathname = raw_input("input pathname: ")

self.dirname = raw_input("input dirname: ")

print "set pathname as: '%s'" %self.pathname

print "set dirname as: '%s'" %self.dirname

def help_find(self):

print "set finding keyword"

def do_find(self, keyword):

if keyword == "":

keyword = raw_input("input finding keyword: ")

print "set finding keyword as: '%s'" %keyword

GrepFromTxt(self.pathname + self.dirname, keyword)

print "find over !"

def help_export(self):

print "export result file"

def do_export(self, para):

print "pathname: '%s'" %self.pathname

print "dirname: '%s'" %self.dirname

WriteDirList(self.pathname + self.dirname, "output.txt")

print "export over !"

# write file lists in according path

def WriteDirList(path, file):

export = ""

for root, dirs, files in os.walk(path):

export += "\n%s %s %s" %(root, dirs, files)

open(file, "w").write(export)

# grep keyword from txt type file only

def GrepFromTxt(path, keyword):

filelist = os.listdir(path)

bFind = ""

print filelist

for file in filelist:

if ".txt" in file:

curfile = open(path + "//" + file)

print "finding %s..." %(curfile)

for line in curfile.readlines():

if keyword in line:

print line

bFind = "true"

if bFind != "true":

print "find nothing !"

##########

# start

##########

if __name__ == '__main__':

cdc = Tool()

cdc.cmdloop()

print "End"

输出格式:

e://test ['2', '3'] ['code_test.c', '\xd0\xc2\xbd\xa8 \xce\xc4\xb1\xbe\xce\xc4\xb5\xb5.txt']

e://test\2 [] ['code_test.c']

e://test\3 [] ['aa.txt']

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值