Me he decidido a aprender Python, para ello, lo primero que estoy haciendo es traducir mis script de Bash al nuevo lenguaje. Mucho Google y mucho leer, probar, corregir y volver a probar. De momento no veo que sea demasiado complicado, aunque aun no he profundizado mucho.
El primer script que he traducido ha sido el del temporizador, no tenía apenas dificultad.
#!/usr/bin/python
import sys
import time
import os
tiempo = input("Introduzca el tiempo: ")
tiempo *= 60
time.sleep(tiempo)
for i in range(3):
os.system('beep')
time.sleep(1)
El segundo script, lo he escrito para que mi amigo nickel pueda practicar con mi script de las peliculas, él aprende Ruby.
import os, os.path
import glob
def listado(path):
try:
for fichero in os.listdir(path):
fname = os.path.join(path, fichero)
if os.path.isdir(fname):
os.makedirs(target + fname) # crea directorio y padres
listado(fname)
else:
print fname
file = open(target + fname, "w")
file.close()
except OSError, e:
print e
path = "/mnt/backup/pelis"
target = "/home/nordri/target"
# Creamos la raiz del objetivo
if not os.path.exists(target): os.makedirs(target)
if not os.path.exists(target + path): os.makedirs(target + path)
listado(path)
Este script genera un árbol espejo del árbol path pero con los archivos vacios. Útil para practicar si quiere obtener el mismo listado de pelis que me sale a mi. No creo que tenga ningun problema en implementarlo. Yo mismo he notado como Python generaba el árbol sin preocuparme de los caracteres extraños que pueden contener los títulos de las pelis. De echo, seguro que la implementación suya le da mil vueltas a la mia, este chaval es un genio.

Pero tio! ¿Un genio? No me fastidies.. un genio no echa tantas horas
Por otro lado, el código me parece un flipe, menos lineas es casi imposible.. Simplemente genial.
Lo he probado y la unica pega que le veo es que si tienes el directorio muy hundido en tu sistema de archivos, al indicarle la ruta origen.. el arbol en el target será con la misma profundidad. La mejora sería que sea donde este el origen, el destino fuese TARGET/backup/.. no crees?
Comment by nickel — May 18, 2008 @ 6:55 pm
Pues no entiendo bien a que te refieres exactamente. Pero lo que yo pretendía era crear bajo TARGET la estructura exacta que existe en mi sistema cuando monto el disco externo. Claro que esto genera mucha profundidad dependiendo de la profundidad de entrada. Te refieres a esto?
Comment by nordri — May 18, 2008 @ 7:10 pm
Exacto.
Tengo: /a/b/c/d/../z/backup
Tendrás: /target/a/b/c/d/../z/backup
Debería tener: /target/backup
Bah! Es ya la pijada. Está bastante bien ^_^!
Comment by nickel — May 18, 2008 @ 7:27 pm