Hola, hay una función que copia una carpeta principal junto con todo su contenido a un destino específico en Python.

He usado diferentes funciones pero parecen copiar los contenidos, excluyendo la carpeta principal.

Muchas gracias

1
Jaff 22 mar. 2017 a las 00:15

2 respuestas

La mejor respuesta

shutil.copytree viene a la mente de inmediato, pero su problema es que copiar el directorio foo en bar no crea bar/foo.

Mi propuesta:

import shutil,os

def copytree2(source,dest):
    os.mkdir(dest)
    dest_dir = os.path.join(dest,os.path.basename(source))
    shutil.copytree(source,dest_dir)
  • primero crear destino
  • luego genera el directorio de destino, que es el nombre base de origen agregado de destino
  • realice copytree con el nuevo destino, por lo que el nivel del nombre de la carpeta de origen aparece debajo de dest

No existe una comprobación sutil sobre el directorio dest ya existente o no. Te dejaré agregar eso si es necesario (usando os.path.isdir(dest) por ejemplo)

Tenga en cuenta que las funciones de shutil vienen con una nota que alienta a los usuarios a copiarlas y modificarlas para satisfacer mejor sus necesidades.

3
Jean-François Fabre 21 mar. 2017 a las 21:27
import shutil
shutil.copytree(srcDir, dst, symlinks=False, ignore=None)
0
ChrisBrownie55 22 mar. 2017 a las 05:30