sucesion - copiar carpeta, subcarpetas y archivos de una ruta a otra ruta en python a través de una función recursiva
que es una funcion recursiva en python (1)
Quiero copiar algunas carpetas y archivos de una ruta a otra ruta. por ejemplo, quiero copiar la carpeta (llamada carpeta1) que tiene otras subcarpetas y algunos archivos dentro de ella a otra carpeta (dst). En mi programa, al principio, quiero verificar si hay una carpeta llamada carpeta1 en la carpeta de destino y si no, crear una carpeta con el nombre de la carpeta1 y luego copiar el contenido de la carpeta1 al destino. Además, tal vez tenemos la carpeta 1 en la ruta de destino, pero hay algunas subcarpetas de la carpeta 1 que no existen en el destino y debemos usar una función recursiva para eso. Aquí está mi función recursiva para este propósito:
def CopyFol_Subfolders(src, src_folder, dst):
Dir = next(os.walk(src))[1]
sub_files = ""
sub_files = next(os.walk(src))[2]
if not os.path.exists(dst + "/" + src_folder):
os.makedirs(dst + "/" + src_folder)
shutil.copy2(src + "/" + src_folder, dst + "/" + src_folder)
elif os.path.exists(src + "/" + src_folder) and is_exist_file(src+"/"+src_folder,dst+"/"+src_folder,sub_files):
copy_files(sub_files, src+"/"+src_folder, dst+"/"+src_folder)
else:
subfolders = ""
subfolders = next(os.walk(src + "/" + src_folder+"/"))[1]
for folder in subfolders:
CopyFol_Subfolders(src + "/" + src_folder, folder, dst + "/" + src_folder)
la función copy_files
copiará los archivos de src +"/"+src_folder
a dst+"/"+src_folder
Estoy confundido y esto no funciona. shutil.copy2
diferentes errores en shutil.copy2
que me dicen que x is not a file
o x is a directory
. Por favor, ¿alguien puede verificar la lógica de mi función recursiva y decirme cuál es este problema?
Utilice os.path.isdir
lugar de os.path.exists
para asegurarse de que solo puede ser un directorio y no un archivo. Y os.path.join
es mejor que concatenar las cadenas de ruta por nosotros mismos.
def CopyFol_Subfolders(src, dst):
for item in os.listdir(src):
s = os.path.join(src, item)
d = os.path.join(dst, item)
if os.path.isdir(s):
CopyFol_Subfolders(s, d)
else:
shutil.copy2(s, d)