Hola. Tengo una duda con python y el modulo shutil, espero alguien sepa python y me pueda ayudar:
Lo que busco primero es crear un directorio y después mover todos los archivos que se encuentren en otro directorio por extensión a esa carpeta. En comandos de Unix seria algo así:
mkdir /home/usuario/directorioNuevo
cp /home/usuario/musica/*.mp3 /home/usuario/directorioNuevo
Eso lo quiero hacer pero en Python. Ahora uso shutil.move. Pero solo me funciona a la hora de mover un archivo(con nombre y extensión). No deja mover solo archivos por extensión.
Ejemplo de código funcional con nombre de archivo y extensión:
directorioOriginal = os.getcwd() directorio = os.path.join(directorioOriginal, 'Peliculas') if not os.path.isdir(directorio): os.mkdir(directorio) os.chdir(directorioOriginal) shutil.move("video.3gp", directorio)
Pero lo que quiero es que se muevan todos por extensión, al editarlo he querido hacerlo así, pero no es posible:
directorioOriginal = os.getcwd() directorio = os.path.join(directorioOriginal, 'Peliculas') if not os.path.isdir(directorio): os.mkdir(directorio) os.chdir(directorioOriginal) shutil.move("*.3gp", directorio)
Me salta este error:
Traceback (most recent call last):
File "./fileR.py", line 17, in <module>
shutil.move("*.3gp", directorio)
File "/usr/lib/python2.6/shutil.py", line 260, in move
copy2(src, real_dst)
File "/usr/lib/python2.6/shutil.py", line 95, in copy2
copyfile(src, dst)
File "/usr/lib/python2.6/shutil.py", line 50, in copyfile
with open(src, 'rb') as fsrc:
IOError: [Errno 2] No such file or directory: '*.3gp'
Espero me puedan ayudar con ese modulo, y si no es posible hacerlo, me dieran alguna idea de que otro modulo puedo usar.
Un saludo
Debes leer los ficheros que
Debes leer los ficheros que quieras mover del directorio y meterlos en una tabla, luego es recorrer esta tabla y ejecutar el comando move con cada elemento.
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Python
lo de leer los ficheros no lo he intentado, no se como hacerlo, pero lo que sigue si, y me da un error.
lo que hice fue crear una lista(son las tablas en python si no me equivoco) de una serie de posibles extensiones que existen:
lvideos = ["*.mp3", "*.mp4", "*.jpg"]
Después trate de leer esta lista desde esta linea:
shutil.move(lvideos[0:2], directorio)
Pero me dice que no es valido incluir listas en esa linea.
Ahora lo de listar todos los archivos por extensión:
lista = glob.glob("*.mp3", "*.mp4", "*.jpg")
Pero en todos casos solo funciona si solo meto un string en el shutil.move, ya que si trato de recorrer la lista(slicing) me marca error, Alguna ejemplo de código?
Gracias
EDITO:
He intentado con el bucle for, pero tampoco me funciona:
move no te va a funcionar con
move no te va a funcionar con máscaras, no me refiero a que pongas las distintas máscaras en move, sino que leas los ficheros de una determinada extensión (o de las extesiones que sean) y lo metas en un array, luego recorres ese array y vas moviendo cada elemento uno a uno.
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
tendrás alguna forma de ayudar con código
Es que no logro hacer que el proceso sea de corrido por así decirlo.
Primero listo todos los archivos con extensión .mp3 después los voy llamando con shutil.move pero solo llamo al primer elemento de la lista que es "0" ya que el slicing no me es permitido por ejemplo [0:20]
Me funciona si solo pongo un numero, pero si hago slicing [:]. Entonces como haría para mover todos? Una linea de esas por cada elemento que haya en la lista?
Alguna forma de que se le fuera sumando un numero para que recorra todos los numeros que hay y copie todos los archivos solo con esa linea? tal ves una función.
Gracias