4.13.2007

presql

Desde hace algun tiempo he estado trabajando en un script en Python para crear un catalogo del contenido de mis cds.

Tras varios intentos y versiones tengo una (la b0_0) que trabaja de forma bastante descente.

En windows arroja el mensaje de error:
error al leer directorio
exceptions.OSError

Pero genera el listado (con la extencion .presql). Aun tengo que provarlo en linux (y hacer que quite el path donde se monta)

La forma de uso es presql-b0_0.py unidad nombre_del_cd
presql-b0_0.py e:\ mis-fotos

El archivo presql de salida tiene insert's para MySql


presql-b0_0.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os, sys, re

if len(sys.argv) == 3:
top = sys.argv[1]
archivo = sys.argv[2] + ".presql"
else:
print "error en el numero de parametros"
sys.exit(2)

#::debug::
#print "*"*8
#print sys.argv
#print top
#print "*"*8

#variables globales
patron = "\S:" #patron de exprecion regular
xver = "b0_0" #version

dirs = []
archivos = []

#recorre en forma recursiva el path dado
try:
dirs = [os.path.join(top, f) for f in os.listdir(top) if os.path.isdir(os.path.join(top, f))]
for d in dirs:
dirs += [os.path.join(d, f) for f in os.listdir(d) if os.path.isdir(os.path.join(d, f))]
dirs += [os.path.join(d, f) for f in os.listdir(d) if os.path.isfile(os.path.join(d, f))]
except os.error:#arroja error
print "error al leer directorio"
print os.error

#print dirs
#print "\n" + "- " * 8

fArch = open(os.path.join(top, archivo),"w")
fArch.write(xver + '\n')
print "* " * 5
print "\ncreando lista en " + os.path.join(top, archivo)
#print "* " * 5

for name in dirs:
name = os.path.join(top, name)
if os.path.isfile(os.path.join(top, name)):
#quitar la unidad (ej d:\\)
top = re.split(patron, top)[-1]
#name = re.split(pat, name)[-1]

#cambia los ´ ' y " por ''
for s in "'´\"":
top = top.replace(s, "''")
name = name.replace(s, "''")

#cambia el backslash por slash
for s in "\\":
name = name.replace(s, "/")
top = top.replace(s, "/")

#crea el insert
sql1 = "INSERT INTO 'cd_cat' ('dir', 'archivo', 'nombre' ) VALUES ('" + top + "' ,'" + name + "' ," + "'" + archivo + "' );\n"
fArch.write(sql1)

#cierra el archivo
fArch.close()
print "terminado"


-----------
Banda: The Wolfgang Press
Album: The Legendary Wolfgang Press and Other Tall Stories (1985)
Titulo: Heart Of Stone