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 查找文件内容的更多相关文章
- Linux里如何查找文件内容
Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件g ...
- Linux里如何查找文件内容 (转)
Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件g ...
- 【转】Linux里如何查找文件内容
原文网址:http://blog.chinaunix.net/uid-25266990-id-199887.html Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ g ...
- Python 输出文件内容到网络端口
Python 输出文件内容到网络端口 $ cat mySocketTest.py import sys import time import socket if __name__ == "_ ...
- 在Linux下查找文件内容包含某个特定字符串的文件
如何在Linux下查找文件内容包含某个特定字符串的文件? 我的目录下面有test1和test2两个文件夹,里面都含有很多文件,其中test2里面还包含一个test文件夹 我想请问的是,如何通过查找关键 ...
- python 修改文件内容
python 修改文件内容 一.修改原文件方式 1 def alter(file,old_str,new_str): 2 """ 3 替换文件中的字符串 4 :param ...
- [转] Linux 查找文件内容
Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件g ...
- linux grep 查找文件内容
自试: wang@wang:~$ grep -i "*args*" ~/IGV01-SW/src/bzrobot_diagnostics/bzrobot_lightbelt_man ...
- Linux查找文件内容小技巧
目录 grep ag linux系统查找文件内容最常见的命令有grep和ag grep grep是比较常见的查找命令 # 在当前目录的py文件里查找所有相关内容 grep -a "broad ...
随机推荐
- adb 切换android输入法
自动化测试执行时,使用了appium输入法,再手动使用时,需要进入设置里面进行切换.adb 也提供了一条命令使用命令切换 1.找出android里面有多少输入法:adb shell ime list ...
- 设置Myeclipse中的代码格式化、注释模板及保存时自动格式化
1:设置注释的模板: 下载此模板: codetemplates.xml 搜索Dangzhang,将其改为你自己的姓名,保存 打开eclipse/myeclipse选择 window-->Pre ...
- java web项目中打开资源文件中文乱码
1 java web项目中经常使用多模块管理.在某一个模块中添加了一些资源文件.但不是启动项目.有时候需要在程序中读取资源文件内容,打包后放到容器中就不能正常运行了.需要将所有资源文件放到启动项目的 ...
- python3 装饰器应用举例
[引子] python 中的装饰器是oop(面向对象编程)设计模式.之装饰器模式的一个应用.由于有语法糖衣的缘故.所以写起来也更加方便 [从一个比较经典的应用场景来讲解装饰器] 有过一定编程经历的工程 ...
- 微信小程序如何获取屏幕宽度
微信小程序如何获取屏幕宽度 方法1: imageLoad: function () { this.setData({ imageWidth: wx.getSystemInfoSync().window ...
- centos7 安装后需要做的事情
安装centos 7 系统之后要做的几件事 #修改主机名 hostnamectl --static set-hostname xd-1 vim /etc/hosts127.0.0.1 xd-1x.x. ...
- CentOS 7 安装中文环境
centos升级到7后,系统设置好多和6有了很大的区别,中文支持就有很大的变化. 1.安装中文语言包. yum install kde-l10n-Chinese 2.安装(已经安装的要重新安装)gli ...
- spring(三) spring事务操作
前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...
- HTML5学习笔记(二十五):事件
在浏览器或文档某个元素发生某个特定情况的瞬间,会作为一个事件进行广播,我们可以对其添加监听来处理特定的事件. 事件流 事件流描述了页面中接收事件的顺序. 整个事件流包含了三个阶段:事件捕获阶段.事件目 ...
- markModified声明要修改的数组字段
更新一个文档的字段的时候,如果该字段的类型是数组类型,则必须在更新保存前声明一下这个数组字段要被修改,否则这个数组字段的值不会被修改.如 article.markModified('categorys ...