Tengo varias carpetas, es decir, Fold1_part1 que tienen 6 subdirectorios. En cada uno de ellos hay 3 carpetas llenas de imágenes etiquetadas como 0,5,10. Estoy tratando de moverlos a otra carpeta que contendrá todas las imágenes de cada categoría (3 carpetas que son 0, 5 o 10).
Respuestas
¿Demasiados anuncios?
yuRa
Puntos
43
Lo resolví escribiendo un script de Python. Solo buscaba ver si Finder tenía alguna funcionalidad incorporada para hacerlo.
EDITAR: ¡Agregado en el código!
import shutil
import os
import time
import sys
import concurrent.futures
path_HDD = "/Volumes/HDD/frames/"
path_10 = "/Volumes/HDD/frames_final/10"
path_0 = "/Volumes/HDD/frames_final/0"
path_5 = "/Volumes/HDD/frames_final/5"
def move(path):
for root, files, directory in os.walk(path, topdown=False):
if(len(root) == 36 or len(root) == 37):
if(len(root) == 36 and int(root[-1]) == 0):
for r, d, f in os.walk(root, topdown=False):
for fi in f:
file_path = os.path.join(r, fi)
try:
shutil.copy(file_path, path_0)
except OSError as error:
print(error)
break
elif(len(root) == 36 and int(root[-1]) == 5):
for r, d, f in os.walk(root, topdown=False):
for fi in f:
file_path = os.path.join(r, fi)
try:
shutil.copy(file_path, path_5)
except OSError as error:
print(error)
break
elif(len(root) == 37 and int(root[-2:]) == 10):
for r, d, f in os.walk(root, topdown=False):
for fi in f:
file_path = os.path.join(r, fi)
try:
shutil.copy(file_path, path_10)
except OSError as error:
print(error)
break
print("DONE")
sys.exit(0)
if __name__ == "__main__":
try :
with concurrent.futures.ProcessPoolExecutor():
move(path_HDD)
except OSError as error:
print(error)