Pesquisa recursiva de subpastas e recuperação de arquivos
No domínio da programação, percorrer diretórios e recuperar arquivos pode ser uma tarefa comum. Uma abordagem eficiente é empregar um algoritmo recursivo para pesquisar subpastas e acumular uma lista de arquivos que atendem a critérios específicos.
Problema encontrado
Um usuário encontrou um obstáculo ao tentar criar uma lista de arquivos específicos em uma pesquisa recursiva de subpastas. O problema resultou da variável subpasta puxando uma lista de subpastas em vez da pasta atual que contém o arquivo. o nome da subpasta na pasta principal onde o arquivo desejado está localizado.
Resolução
A chave para resolver esse problema está em aproveitar a "raiz" ou variável "dirpath" em vez de "subFolder". Esta variável contém o caminho absoluto para o diretório atual que está sendo percorrido durante a recursão. Ao incorporar esse caminho na construção do fileNamePath, a precisão desejada pode ser alcançada.
import os resultado = [os.path.join(dp, f) para dp, dn, nomes de arquivos em os.walk(PATH) para f em nomes de arquivos se os.path.splitext(f)[1] == '.txt']
Aprimoramento do módulo Glob
import os
result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == '.txt']
import os de glob importar glob resultado = [y para x em os.walk(PATH) para y em glob(os.path.join(x[0], '*.txt'))]
Função geradora
import os
from glob import glob
result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]
da cadeia de importação itertools resultado = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) para x em os.walk('.')))
Python 3.4 Solução
from itertools import chain
result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))
from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))
Essas abordagens fornecem soluções eficazes para pesquisar recursivamente subpastas e compilar uma lista de arquivos que atendam aos critérios desejados, facilitando suas tarefas de recuperação de arquivos.Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3