[ python应用 ] python递归搜索文件,支持搜索多个文件,支持自定义处理动作

时间:2020-04-20
本文章向大家介绍[ python应用 ] python递归搜索文件,支持搜索多个文件,支持自定义处理动作,主要包括[ python应用 ] python递归搜索文件,支持搜索多个文件,支持自定义处理动作使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
PATH = r'E:\MyDocument\xxx'  # 要搜索的目录地址
TARGET_PATH = r'E:\MyDocument\新しいフォルダー\1' # 把搜索结果复制到目的地址
NAME_PATH = r'1.txt' # 要读取的文件(同时搜索多个)
NAME = '' # 搜索一个
NAMES = [] # 自定义搜索,如果填写了这个字段,则忽略从文件加载
READ_FROM_FILE = 0 #是否开启从文件加载



import os
from shutil import copyfile
class Search():
    def __init__(self):
        self.names = []
        self.func = None
        self.once = True
    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))
                if self.once:return
    def searchName(self,path,name,func,once=True):
        self.func = func
        self.once = once
        self.__core(path,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
        for name in names:
            self.__core(path,name)


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()

原文地址:https://www.cnblogs.com/remly/p/12738411.html