"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como pesquisar subpastas recursivamente e recuperar arquivos em Python?

Como pesquisar subpastas recursivamente e recuperar arquivos em Python?

Publicado em 2024-11-16
Navegar:890

How to Recursively Search Sub-Folders and Retrieve Files in Python?

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.

Tutorial mais recente Mais>

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