[ python应用 ] python递归搜索文件,支持搜索多个文件,支持自定义处理动作
写了一个PyQT界面的版本:https://github.com/LongchuanYu/pyqt_project
PATH = r'E:\MyDocument\新しいフォルダー\' # 要搜索的目录地址 TARGET_PATH = r'E:\MyDocument\新しいフォルダー\1' # 把搜索结果复制到目的地址 NAME_PATH = r'1.txt' # 要读取的文件(同时搜索多个) NAME = '333' # 搜索一个 NAMES = [] # 自定义搜索,如果填写了这个字段,则忽略从文件加载 READ_FROM_FILE = 1 #是否开启从文件加载 import os
from shutil import copyfile
class Search():
def __init__(self):
self.names = []
self.func = None
self.once = True
self.founded = False
def __core(self,path,name): files = os.listdir(path)
for file in files:
if os.path.isdir(os.path.join(path,file)):
self.__core( os.path.join( path,file),name)
elif name in file:
self.func(os.path.join(path,file))
self.founded = True
if self.once:return
def searchName(self,path,name,func,once=True):
self.func = func
self.once = once
self.founded = False
self.__core(path,name)
if not self.founded:
print(name + ' 未找到')
def searchNames(self,path,names,func,once=True):
if not len(names):
print("names error.")
return self.names = names
self.func = func
self.once = once
not_found_list = []
for name in names:
self.founded = False
self.__core(path,name)
if not self.founded:
not_found_list.append(name)
if len(not_found_list):
print('以下项目未找到:')
for item in not_found_list:
print(item) def func(path):
name = path.split('\\')
tar = os.path.join(TARGET_PATH,name[-1])
copyfile(path,tar) def main():
s = Search()
# s.searchName(PATH,NAME,func,False)
if not len(NAMES) and READ_FROM_FILE:
with open(NAME_PATH,'r',encoding='utf-8') as f:
for line in f:
NAMES.append(line.strip('\n')) s.searchNames(PATH,NAMES,func,False)
main()
[ python应用 ] python递归搜索文件,支持搜索多个文件,支持自定义处理动作的更多相关文章
- Python机器学习笔记 Grid SearchCV(网格搜索)
在机器学习模型中,需要人工选择的参数称为超参数.比如随机森林中决策树的个数,人工神经网络模型中隐藏层层数和每层的节点个数,正则项中常数大小等等,他们都需要事先指定.超参数选择不恰当,就会出现欠拟合或者 ...
- 利用python爬取海量疾病名称百度搜索词条目数的爬虫实现
实验原因: 目前有一个医疗百科检索项目,该项目中对关键词进行检索后,返回的结果很多,可惜结果的排序很不好,影响用户体验.简单来说,搜索出来的所有符合疾病中,有可能是最不常见的疾病是排在第一个的,而最有 ...
- python 全栈开发,Day115(urlencode,批量操作,快速搜索,保留原搜索条件,自定义分页,拆分代码)
今日内容前戏 静态字段和字段 先来看下面一段代码 class Foo: x = 1 # 类变量.静态字段.静态属性 def __init__(self): y = 6 # 实例变量.字段.对象属性 # ...
- Java递归搜索指定文件夹下的匹配文件
import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Queue; /** ...
- python 实现图的深度优先和广度优先搜索
在介绍 python 实现图的深度优先和广度优先搜索前,我们先来了解下什么是"图". 1 一些定义 顶点 顶点(也称为"节点")是图的基本部分.它可以有一个名称 ...
- python实现广度优先搜索和深度优先搜索
图的概念 图表示的是多点之间的连接关系,由节点和边组成.类型分为有向图,无向图,加权图等,任何问题只要能抽象为图,那么就可以应用相应的图算法. 用字典来表示图 这里我们以有向图举例,有向图的邻居节点是 ...
- python递归列出目录及其子目录下所有文件
python递归列出目录及其子目录下所有文件 一.前言 函数的递归,简单来说,就是函数内部调用自己 先举个小例子,求阶乘 def factorial(n): if n == 0: return 1 e ...
- (24)Python实现递归生成或者删除一个文件目录及文件
def removeDir(dirPath): ''' Created by Wu Yongcong 2017-8-18 :param dirPath: :return: ''' if not os. ...
- 【原创】python倒排索引之查找包含某主题或单词的文件
什么是倒排索引? 倒排索引(英语:Inverted index),也常被称为反向索引.置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射.它是文 ...
- win下gvim或者linux下的vim安装vundle都适用的配置文件 - 在当前目录及其子目录下**, 的所有文件* 中, 搜索当前光标所在的单词
gvim下的普通配置: if v:lang =~ "utf8$" || v:lang =~ "UTF-8$" set fileencodings=utf-8,g ...
随机推荐
- 【C/C++】习题3-4 周期串/算法竞赛入门经典/数组和字符串
[题目] 如果某个字符串可以由长度为k的字符串重复多次得到,则称该串以k为周期. 输入一个长度不超过80的字符串,输出最小周期. [思路] 暴力求解.依次考察周期1~长度n. 筛选:周期一定是长度n的 ...
- linux系统目录初识
目录 今日内容概要 内容详细 系统目录结构介绍 目录结构知识描述 今日内容概要 系统目录结构介绍 目录结构详细描述 内容详细 系统目录结构介绍 # 1.linux系统中的目录 一切从根开始 结构拥有层 ...
- vue双向绑定和深浅拷贝
现象描述: vue 在使用的时候,当table绑定了某个data的时候.假如某个el-table-column下面的有个方法传参(data.row),然后在方法中用一个obj=data.row.(这里 ...
- malloc实现
任何一个用过或学过C的人对malloc都不会陌生.大家都知道malloc可以分配一段连续的内存空间,并且在不再使用时可以通过free释放 掉.但是,许多程序员对malloc背后的事情并不熟悉,许多人甚 ...
- Apache Log4j2,RASP 防御优势及原理
Apache Log4j2 远程代码执行漏洞已爆发一周,安全厂商提供各类防御方案和检测工具,甲方团队连夜应急. 影响持续至今,网上流传的各种利用和绕过姿势还在层出不穷,影响面持续扩大.所有安全人都开始 ...
- CF699A Launch of Collider 题解
Content 有 \(n\) 辆车在一条数轴上,第 \(i\) 辆车在 \(a_i\) 上,每辆车要么向左,要么向右.开始,它们以 \(1\) 个单位每秒的速度在行驶.问你第一次撞车发生在第几秒的时 ...
- LuoguP7426 [THUPC2017] 体育成绩统计 题解
Update \(\texttt{2021.3.11}\) 修复了一个笔误. Content 太长了,请直接跳转回题面查看. 数据范围:\(n\leqslant 10^4\),\(0\leqslant ...
- SecureCRT中Vim颜色
解决方法:1.确认安装了vim-enhancedrpm -qa | grep vim-enhanced2.optins>session optionsTerminal>emulationx ...
- 复杂SQL案例:用户退款信息查询
供参考: select t3.course_id 课程id, t3.user_id 用户ID, u.user_full_name 姓名, -- u.phone, concat(u.company,' ...
- ARTS Week 18
Algorithm 本周的 LeetCode 题目为 55. 跳跃游戏 给定一个非负整数数组 nums, 你最初位于数组的 第一个下标 .数组中的每个元素代表你在该位置可以跳跃的最大长度.判断你是否能 ...