python查找文件内容_python 查找文件内容

输入查找的文件夹路径,要查找的内容关键字(可以指定多个),要查找的文件类型(可以是多个),搜索出符合条件的文件,并记录所有符合条件的行号及行内容。

写的感觉有点冗余,但好歹还能使用^-^,主要是方便手头工作。# coding:utf8

import os

from os.path import *

# enter the search dir

print r"""Search file tool(Ver1.0)

dirpath /k keywords [/e fileextension] [/o resultfilepath]

/k keyword you want to search

/e file extension(.txt .java .cs etc...)

/o the path of the result file you want to save

example:

e:\temp\py /k 'kw1' /e '.txt'

e:\temp\py /k "kw1" "kw2" /e ".txt" ".cs" /o e:\temp\py\result.txt

"""

# Get user command.

input = raw_input("> ")

if input.find("/k") < 0:

print "/k option must be input"

exit(1)

# Get the dir

root_dir = input.split("/k")[0].strip()

if not isdir(root_dir):

print "First parameter must be a valid dir!"

exit(1)

# Get the keywords and file extension

option = input.split("/k")[1].strip()

if option.find("/e") < 0:

key_words = [s.strip("\'\"") for s in option.split()]

else:

key_words = [s.strip("\'\"") for s in option.split("/e")[0].strip().split()]

if option.find("/o") < 0:

file_exts = [s.strip("\'\"") for s in option.split("/e")[1].strip().split()]

else:

file_exts = [s.strip("\'\"") for s in option.split("/e")[1].strip().split("/o")[0].strip().split()]

search_filter = "Search dir:%s\n" % root_dir

search_filter = search_filter + ("Search key words:%s\n" % " ".join(key_words))

if file_exts:

search_filter = search_filter + ("Search file type:%s\n" % " ".join(file_exts))

print search_filter

# Search file by the keyword

result_files = {}

for (dir_name, subdirs, files) in os.walk(root_dir):

for file in files:

filepath = os.path.join(dir_name, file)

ext = os.path.splitext(filepath)[1]

if file_exts and (ext not in file_exts):

continue

file = open(filepath)

# Compare every lines of the file by the keywords

for index, line in enumerate(file.readlines()):

for keyword in key_words:

if line.find(keyword) > 0:

# Save matched line and line number

match_line = "line:%d %s" % (index, line)

if filepath not in result_files.keys():

result_files[filepath] = []

result_files[filepath].append(match_line)

break

file.close()

print "Search finish!"

# Output the search result

if option.find("/o") >= 0:

# Write result to file

save_file_path = option.split("/o")[len(option.split("/o")) - 1].strip()

save_file = open(save_file_path, "w")

save_file.write(search_filter)

summary = "find:%d files" % len(result_files.keys())

save_file.write("%s\n" % summary)

for key, value in result_files.items():

save_file.write("%s\n" % key)

for line in value:

#print "type:", type(line)

save_file.write("--%s" % line)

save_file.close()

else:

# Show result in command window

summary = "find:%d files" % len(result_files.keys())

print summary

for key, value in result_files.items():

print "%s" % key

for line in value:

print "--%s" % line

直接运行,就可以提示你如何操作,第一个实用的python程序,记录一下。

你可能感兴趣的:(python查找文件内容)