Foros del Web » Programando para Internet » Python »

¿Cómo mover archivos por fechas a sus respectivas carpetas en Python?

Estas en el tema de ¿Cómo mover archivos por fechas a sus respectivas carpetas en Python? en el foro de Python en Foros del Web. Tengo varios archivos que tiene por nombre la fecha en día juliano. Ejemplo: 2014353_180000 2014353_190000 2014353_200000 2014354_180000 2014354_190000 2015355_190000 2015355_200000 ...etc. Lo que quiero es ...
  #1 (permalink)  
Antiguo 30/12/2015, 16:00
 
Fecha de Ingreso: diciembre-2015
Mensajes: 1
Antigüedad: 8 años, 10 meses
Puntos: 0
Pregunta ¿Cómo mover archivos por fechas a sus respectivas carpetas en Python?

Tengo varios archivos que tiene por nombre la fecha en día juliano. Ejemplo:

2014353_180000
2014353_190000
2014353_200000
2014354_180000
2014354_190000
2015355_190000
2015355_200000
...etc.
Lo que quiero es que de esos archivos pasarlos a su respectiva carpeta, como lo muestro a continuación.

Código:
├ 2014353/
|  ├─ 2014353_180000
|  ├─ 2014353_190000
|  └─ 2014353_200000
├ 2015354/
|  ├─ 2015354_190000
|  └─ 2015354_200000
etc ...
¿Cómo podría hacerlo, alguna ayuda?

Tengo lo siguiente:
Código:
import glob, os, shutil, os, errno, sys
import subprocess
from glob import glob
from os.path import join
from os import listdir, makedirs
from os.path import isfile, join, exists
from shutil import move

def esFecha( nombre ):
  if ( len(nombre)<7 ):
    return False
  if ( not nombre[0:7].isdigit() ):
    return False
  dia = int( nombre[4:7] )
  return dia>=1 and dia<=366

def moverFichero( nombre, listado ):
  directorio = nombre[0:7]
  destino = join( listado, directorio)
  if ( not exists(destino) ):
    makedirs(destino)
  origen = join( listado, nombre )
  move ( origen, destino )

dirBase='C:\\Dats\\'
listado = glob(join(dirBase,'D*','2*','B*','*','*'))

ficheros = [ f for f in listdir(listado) if isfile(join(listado,f)) ]
for fich in ficheros:
  if ( esFecha( fich ) ):
    moverFichero( fich, listado )
me aparece el siguiente error:
Código:
Traceback (most recent call last):
  File "directorio.py", line 28, in <module>
    ficheros = [ f for f in listdir(listado) if isfile(join(listado,f)) ]
TypeError: coercing to Unicode: need string or buffer, list found
  #2 (permalink)  
Antiguo 02/01/2016, 16:41
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: ¿Cómo mover archivos por fechas a sus respectivas carpetas en Python?

Bueno listado es una lista, mientras que listdir espera un string (la ruta) que va a listar.

Etiquetas: ficheros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:28.