es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Buscar el nombre de archivo y la carpeta principal utilizando regex – Python

Estoy tratando de confirmar el nombre de archivo y la carpeta principal de un archivo utilizando la biblioteca de regex y sin tener que listar explícitamente la ruta del archivo, pero estoy encontrando problemas. Quiero imprimir el nombre del archivo y también la carpeta principal del archivo, aquí está mi script:

import re
import glob
from pathlib import Path

files = [f for f in glob.glob('*.tif') if re.search('((?i)\/Image_Names\/.*_dsm.*\.tif)', f)]

for filename in files:
    print(files)  # listar los archivos
    print(Path().resolve().parts[-2])  # listar la carpeta principal donde reside el archivo .tif

Puedo listar la carpeta principal del archivo .tif utilizando la función Path, pero no puedo listar el propio nombre del archivo. Necesito poder imprimir el nombre de archivo (dsm.tif) y la carpeta principal (Image_Names) explícitamente a través de regex, cualquier ayuda es muy apreciada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para imprimir el nombre del archivo (_dsm.tif) y la carpeta padre (Image_Names) explícitamente mediante expresiones regulares, puedes modificar el bucle for para extraer el nombre del archivo y la carpeta padre utilizando expresiones regulares. Aquí tienes una versión actualizada del script que debería lograr esto:

    import re
    import glob
    from pathlib import Path
    
    files = [f for f in glob.glob('*.tif') if re.search('((?i)/Image_Names/.*_dsm.*\.tif)', f)]
    
    for filename in files:
        # extraer nombre del archivo y carpeta padre utilizando expresiones regulares
        match = re.search(r'(?P<parent_folder>Image_Names)/(?P<filename>.+_dsm\.tif)', filename)
        parent_folder = match.group('parent_folder')
        filename = match.group('filename')
    
        print(filename)  # imprimir nombre del archivo
        print(parent_folder)  # imprimir carpeta padre
    

    Esto debería mostrar el nombre del archivo y la carpeta padre para cada archivo coincidente. Ten en cuenta que el patrón de expresión regular utilizado en la comprensión de lista files también se ha modificado ligeramente para capturar archivos con _dsm en cualquier parte de su nombre, en lugar de solo al final.

Comments are closed.