recorrer - Copie los contenidos del directorio en un directorio con python
recorrer directorios en python (4)
Tengo un directorio / a / b / c que tiene archivos y subdirectorios. Necesito copiar el / a / b / c / * en el directorio / x / y / z. ¿Qué métodos de python puedo usar?
Intenté shutil.copytree("a/b/c", "/x/y/z")
, pero python intenta crear / x / y / z y genera un error "Directory exists"
.
Encontré este código funcionando.
from distutils.dir_util import copy_tree
# copy subdirectory example
fromDirectory = "/a/b/c"
toDirectory = "/x/y/z"
copy_tree(fromDirectory, toDirectory)
Las libs de python están obsoletas con esta función. He hecho uno que funciona correctamente:
import os
import shutil
def copydirectorykut(src, dst):
os.chdir(dst)
list=os.listdir(src)
nom= src+''.txt''
fitx= open(nom, ''w'')
for item in list:
fitx.write("%s/n" % item)
fitx.close()
f = open(nom,''r'')
for line in f.readlines():
if "." in line:
shutil.copy(src+''/''+line[:-1],dst+''/''+line[:-1])
else:
if not os.path.exists(dst+''/''+line[:-1]):
os.makedirs(dst+''/''+line[:-1])
copydirectorykut(src+''/''+line[:-1],dst+''/''+line[:-1])
copydirectorykut(src+''/''+line[:-1],dst+''/''+line[:-1])
f.close()
os.remove(nom)
os.chdir(''..'')
También puede usar glob2 para recopilar recursivamente todas las rutas (usando ** comodines de subcarpetas) y luego usar shutil.copyfile, guardando las rutas
Enlace glob2: https://code.activestate.com/pypm/glob2/
from subprocess import call
def cp_dir(source, target):
call([''cp'', ''-a'', source, target]) # Linux
cp_dir(''/a/b/c/'', ''/x/y/z/'')
Esto funciona para mi. Básicamente, ejecuta el comando de shell cp .