[aplicación python] Python busca archivos de forma recursiva, admite la búsqueda de múltiples archivos y admite acciones de procesamiento personalizadas

El PATH = R ^ ' E: \ la MiDocumento \ XXX '   # directorio de direcciones para buscar 
TARGET_PATH = R ^ ' E: \ la MiDocumento \ nueva shiいfuォHikaru la interー\ 1 '  # copiar los resultados de búsqueda a la dirección de destino 
NAME_PATH = R ^ ' 1.txt '  # para ser leído archivo (buscar simultáneamente múltiples) toma 
NOMBRE = ''  # búsqueda de un 
NOMBRES = [] # búsqueda personalizada, si relleno en este campo es ignorado carga desde el archivo 
READ_FROM_FILE = 0 # si el archivo abierto se carga desde 



importación OS
 de shutil importación copyfile
 class Search ():
     def  __init__ (self): 
        self.names = []
        self.func = Ninguno 
        self.once = True
     def  __core (self, ruta, nombre): 
        
        files = os.listdir (ruta)
         para el archivo en archivos:
             if os.path.isdir (os.path.join (ruta, archivo) ): 
                auto. __core (os.path.join (ruta, archivo), nombre)
             elif name en el archivo: 
                self.func (os.path.join (ruta, archivo)) 
                if self.once: return 
    def searchName (self, ruta, nombre, func, once = True): 
        self.func= func 
        self.once = once 
        self. __core (ruta, nombre)
     def searchNames (self, ruta, nombres, func, once = True):
         si  no es len (nombres):
             print ( " error de nombres " ),
             devuelve 
        self.names = names 
        self.func = func 
        self. una vez = una vez
         por nombre en nombres: 
            self. __core (ruta, nombre)


 def func (ruta):
    name = path.split ( ' \\ ' ) 
    tar = os.path.join (TARGET_PATH, name [-1 ]) 
    copyfile (path, tar) 

def main (): 
    s = Search ()
     # s.searchName (PATH, NAME, func, False) 
    si  no es len (NAMES) y READ_FROM_FILE: 
        con open (NAME_PATH, ' r ' , encoding = ' utf-8 ' ) como f:
             para la línea en f: 
                NAMES.append (line.strip ( ' \ n ' ))

    s.searchNames (PATH, NAMES, func, False) 
main ()

 

Supongo que te gusta

Origin www.cnblogs.com/remly/p/12738411.html
Recomendado
Clasificación