Python - Crear carpetas con nombres de archivos que se han movido

 
Vista:
Imágen de perfil de Isidoro J.

Crear carpetas con nombres de archivos que se han movido

Publicado por Isidoro J. (3 intervenciones) el 17/10/2022 13:28:11
Crear carpetas con nombres de archivos que se han movido


Hola a todos. He empezado hasta hace poco a trabajar con Python, y todavía estoy muy verde, paciencia conmigo.

He creado éste código que haga que cualquier archivo que contenga X palabras, se muevan a una carpeta u otra. Hasta ahí todo bien, todo funciona correctamente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import os
import shutil
import glob
 
 
source = r"C:\Users\Pasanus\Downloads\Captuars"
 
 
destHumanos = r"H:\Plasencia\3D\REVISADOS\Tabletop\Nueva carpeta\Humanos"
destDragon = r"H:\Plasencia\3D\REVISADOS\Tabletop\Nueva carpeta\Dragones"
 
for Archivos in glob.glob(source + "\\*Humano*"):
    shutil.move(Archivos, destHumanos)
 
 
for Archivos in glob.glob(source + "\\*Dragon*"):
    shutil.move(Archivos, destDragon)

Pero ahora quisiera que se crearan carpetas en los destinos con los nombres de los archivos que se acaban de mover, y si hubiese 2 o más archivos con el mismo nombre, se guardarán en la misma carpeta.

Muchas gracias, espero puedan ayudarme.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isidoro J.

Crear carpetas con nombres de archivos que se han movido

Publicado por Isidoro J. (3 intervenciones) el 19/10/2022 11:58:01
Bueno, después de un par de días haciendo pruebas, he conseguido llegar a esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import os
import shutil
import glob
import errno
 
 
source = r"C:\Users\Pasanus\Downloads\Captuars"
 
destArtisan = r"H:\Plasencia\3D\REVISADOS\Tabletop\Nueva carpeta\Artisan Guild\New"
destEpic = r"H:\Plasencia\3D\REVISADOS\Tabletop\Nueva carpeta\Epic Minis\New"
 
 
 
for i in glob.glob(source + "\\*Artisan Guild*"):
    if i:
        for Archivos in glob.glob(source + "\\*Artisan Guild*"):
            try:
                os.mkdir(destArtisan)
            except OSError as e:
                if e.errno != errno.EEXIST:
                    raise
 
            shutil.move(Archivos, destArtisan)
 
        print(os.listdir(destArtisan))
        listaArtisan = os.listdir(destArtisan)
        os.rename(destArtisan, r'H:\Plasencia\3D\REVISADOS\Tabletop\Nueva carpeta\Artisan Guild\\' + listaArtisan[0])
    else:
        continue
 
for i in glob.glob(source + "\\*Epic Miniatures*"):
    if i:
        for Archivos in glob.glob(source + "\\*Epic Miniatures*"):
            try:
                os.mkdir(destEpic)
            except OSError as e:
                if e.errno != errno.EEXIST:
                    raise
 
            shutil.move(Archivos, destArtisan)
 
        print(os.listdir(destEpic))
        listaEpic = os.listdir(destEpic)
        os.rename(destEpic, r'H:\Plasencia\3D\REVISADOS\Tabletop\Nueva carpeta\Epic Miniatures\\' + listaEpic[0])
    else:
        continue

No se si está bien formulado, o si es elegante, pero funcionar funciona. El código revisa si dentro de la carpeta de Origen "Source" hay algún archivo que contenga las palabras claves, y si lo hay, crea una carpeta nueva, mueve los archivos en ella, y renombra dicha carpeta con el primer nombre que encuentra dentro de la misma.
Ahora solo tengo que repetirlo 23 veces para 23 palabras clave, pero creo que está bien, no?

Siguiente paso sería crear un ejecutable en la carpeta de Origen "Source" que haga todo eso sin tener que abrir Python.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar