[本文出自天外归云的博客园]
脚本功能:在指定的路径下递归搜索,找出指定字符串在文件中出现的位置(行信息)。
用到的python特性:
代码如下:
import os
import sys
__all__ = ['DirPath']
'''
在指定路径下递归查找包含指定字符串的文件
可以指定查找的文件类型category-默认为'.py'
可以指定查找的字符串str-默认为'python'
'''
class DirPath(object):
# 初始化参数查找路径-path
def __init__(self, path):
self.show = self.show()
self.path = path
# 开启func协程的装饰器
def on(func):
def wrapper(*args):
res = func(*args)
next(res)
return res
return wrapper
@on
# 搜索path路径下的python文件
def search(self, target, category):
while True:
path = yield
for entry in os.scandir(path):
if entry.is_file():
if entry.name.endswith(category):
target.send(entry.path)
if entry.is_dir():
self.search(target, category).send(entry.path)
@on
# 找到f文件中包含str的行信息并发送给target
def find_str(self, target, str):
while True:
path = yield
with open(path, "r", encoding='utf-8') as f:
for (name, value) in enumerate(f):
if str in value:
target.send(f"[{path}][{name+1}]:{value}")
@on
# 展示查询结果
def show(self):
while True:
res = yield
print(res)
# 默认在'.py'类型文件中查找字符串-可以指定文件类型category
# 默认查找字符串'python'-可以指定查找字符串str
def code_search(self, category=".py", str="python"):
self.search(self.find_str(self.show, str), category).send(self.path)
if __name__ == '__main__':
path = sys.argv[1]
Dir = DirPath(path)
Dir.code_search(str=sys.argv[2], category=sys.argv[3])
本地运行脚本,搜索结果示例如下:
python之实现循环查看指定路径下的所有文件---os.walk
循环查看指定路径下的所有文件.文件夹,包含隐藏文件注:“.filename” 以点开头的是隐藏文件 import os for cur_path,cur_dirs,cur_files in os.wa ...
Python小代码_15_遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间
遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间 import osimport datetime def print_tree(dir_path): for ...
Python —— 批量替换指定目录下的所有文件中指定字符串
参考:http://blog.csdn.net/zcwfengbingdongguke/article/details/13951527 代码: #!/usr/bin/python import os ...
nodejs 获取指定路径下所有的文件夹名
示例:获取 ./components 下所有的文件夹名称 let components = [] const files = fs.readdirSync('./components') files. ...
封装的方法--读取任何路径下的properties文件中的值
概述:我们在做项目时,经常需要从某个properties文件中读取properties文件中的值.现在我封装了一下方法,直接读取配置文件中的值. 代码如下所示: /** * Created by qi ...
linux下使用grep在当前目录下搜索所有文件中含有的字符串
grep -r yourstr ./ 举例: grep -r sprintf ./ (在当前目录下递归查找含有字符串sprintf的文件)
Linux系统下,在文件中查找某个字符串
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车. Vim会跳转到第一个匹配.按下n查找下一个,按下N查找上一个. Vim查找支持正则表达式,例如/vim$匹配行尾的" ...
【Lua】关于遍历指定路径下所有目录及文件
关于Lua中如何遍历指定文件路径下的所有文件,需要用到Lua的lfs库. 首先创建一个temp.lua文件,用编辑器打开: 要使用lfs库,首先需要把lfs库加载进来 require("lf ...
java通过文件路径读取该路径下的所有文件并将其放入list中
java通过文件路径读取该路径下的所有文件并将其放入list中 java中可以通过递归的方式获取指定路径下的所有文件并将其放入List集合中.假设指定路径为path,目标集合为fileList,遍 ...
随机推荐
Android Studio:Failed to resolve ***
更换电脑后,也更新了所有的SDK的tool,仍然报错:Failed to resolve 各种jar包,出现这种问题主要是因为在Android studio中默认不允许在线更新,修改方法如下:
二维RMQ
求二维ST表 ;k<=;k++) ;l<=;l++) ;i<=n;i++) ;j<=m;j++){ <<(l-)),m+),tx=min(n+,i+(<< ...
NOI 银河英雄传说
并查集水题,记录祖先,大小和深度即可,每次用祖先的大小和深度更新后代的深度. #include #include #include &l ...
python3代码
import urllib.request url="http://mm.taobao.com/json/request_top_list.htm?type=0&page=1&quo ...
64位Win2008_VS2012使用ODP.NET遭遇问题和解决办法
原文地址:64位Win2008_VS2012使用ODP.NET遭遇问题和解决办法 最近为使用Oracle11G数据库做个快速开发的小程序,使用64位Win2008+Vs2012环境,结果碰壁连环,幸好 ...
Entity Framework连接postgresql,code first
官方介绍地址 http://www.npgsql.org/ef6/index.html 首先创建一个控制台应用程序 ,本例居于.NETFramework,Version=v4.6.1 安装包 Enti ...
codeforces #530 D(Sum in the tree) (树上贪心)
Mitya has a rooted tree with nn vertices indexed from 11 to nn, where the root has index 11. Each ve ...
NOIP模拟 candy
题目描述 一天,小 DD 决定买一些糖果.他决定在两家不同的商店中买糖果,来体验更多的口味. 在每家商店中都有 nn 颗糖果,每颗糖果都有一个权值:愉悦度,代表小 DD 觉得这种糖果有多好吃.其中,第 ...
asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(一)—— 手把手教你创建第一个三层架构+mvc的asp.net项目
下面开启项目 1. 打开vs2010-文件-新建项目 2. 先创建一个空的解决方案: 选择其他项目类型-visual studio 解决方案-空白解决方案(默认.NET Framework 4),项目 ...