Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/12/2015, 16:00
terry_arman2
 
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