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.

Cómo copiar archivos enumerados en un archivo de texto, pero omitir si los nombres de archivo no existen.

Estoy copiando una lista de imágenes de una carpeta a otra. La lista contiene algunos nombres de imágenes que no están en la carpeta de origen. Tengo que copiar solo aquellos nombres de imágenes que estén tanto en la lista como en la carpeta de origen, y omitir los nombres que falten.

import shutil
import os

dst = r"C:/usuario/datos1/"

with open('test.txt') as mi_archivo:
    for nombre_archivo in mi_archivo if os.path.exists(nombre_archivo):
        nombre_archivo = nombre_archivo.strip()
        src = r'C:/usuario/datos2/' + nombre_archivo
        shutil.copy(src, dst + nombre_archivo)
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para copiar solo los nombres de las imágenes que están tanto en la lista como en la carpeta de origen y omitir los nombres que faltan, podemos usar el método os.path.exists() para verificar si el archivo existe en la carpeta de origen antes de copiarlo. El código proporcionado arriba logra esto iterando a través de cada nombre de archivo en el archivo test.txt, verificando si el archivo existe en la carpeta de origen y solo copiándolo si es así.

    Comenzamos importando los módulos shutil y os, que se utilizan para realizar operaciones de archivos y verificar si los archivos existen, respectivamente. Luego, establecemos la carpeta de destino dst en C:/user/data1/, que es la carpeta a la que queremos copiar las imágenes.

    Luego, abrimos el archivo test.txt utilizando la instrucción with open() e iteramos a través de cada nombre de archivo en el archivo utilizando un bucle for. Utilizamos la instrucción if para verificar si el archivo existe en la carpeta de origen utilizando el método os.path.exists(). Si existe, eliminamos cualquier carácter de espacio en blanco del nombre de archivo utilizando el método strip() y establecemos la carpeta de origen src en C:/user/data2/ concatenado con el nombre de archivo sin espacios.

    Luego, usamos el método shutil.copy() para copiar el archivo desde la carpeta de origen a la carpeta de destino dst concatenada con el nombre de archivo. Esto asegura que solo se copien los nombres de las imágenes que están tanto en la lista como en la carpeta de origen, mientras que se ignoran los nombres que faltan.

Comments are closed.