sábado, 5 de diciembre de 2015

Bailando entre serpientes.

Pues eso, un poco de código para no oxidarse.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Dec  5 18:26:11 2015

@author: chaosnet
"""

def diccionario_fechas(separador, formato_meses, orden):
    """Devuelve un diccionario basado en combinaciones de fechas delimitado
    por un separador. Toma los parámetro 'separador' como cadena de texto entre
    los días, años y meses, 'formato_meses' con valor 'nombre, numero,
    m_abreviado, a_abreviado_nombre, a_abreviado_numero o t_abreviado' en
    función de como quieran representarse y 'orden' con las combinaciones de
    dma (dia, mes, año)"""

    diccio = []
    dias = [x for x in range(1, 32)]
    meses_nombre = ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio",
         "agosto", "septiembre", "octubre", "noviembre", "diciembre"]
    meses_numero = [x for x in range(1,13)]
    años = [x for x in range(1945, 2015)]
    años_abr = [x for x in range(10,100)]
    años09 = [x for x in range(0,10)]
    for p in años09:
        años_abr.append("0" + str(p))
       
       
    # Declaramos los casos del parámetro 'formato_meses'
    if formato_meses == "nombre":
        meses = meses_nombre
    elif formato_meses == "numero":
        meses = meses_numero
    elif formato_meses == "m_abreviado":
        meses = []
        for m in meses_nombre:
            meses.append(str(m[0:3:]))
    elif formato_meses == "a_abreviado_nombre":
        años = años_abr
        meses = meses_nombre
    elif formato_meses == "a_abreviado_numero":
        años = años_abr
        meses = meses_numero
    elif formato_meses == "t_abreviado":
        años = años_abr
        meses = []
        for m in meses_nombre:
            meses.append(str(m[0:3:]))       
    else:
        print("El parámetro 'formato_meses' a de ser 'nombre' o 'numero'")
        return None


    # Declaramos los casos del parámetro 'orden'
    if orden == "dma":
        a = dias
        b = meses
        c = años
    elif orden == "mad":
        a = meses
        b = años
        c = dias
    elif orden == "adm":
        a = años
        b = dias
        c = meses
    elif orden == "mda":
        a = meses
        b = dias
        c = años
    elif orden == "dam":
        a = dias
        b = años
        c = meses
    elif orden == "amd":
        a = años
        b = meses
        c = dias
    else:
        print("El parametro orden es incorrecto. Introduzca una cadena tipo 'dma' donde d es dias, m meses y a años.")
        return None

    # Concatenamos las cadenas generando el diccionario.
    for a1 in a:
        for b1 in b:
            for c1 in c:
                     diccio.append(str(a1) + separador + str(b1) + separador + str(c1))
    return diccio

# Aquí se define como actuará si se le llama como principal con argumentos de entrada   
if __name__ == '__main__':
    import sys
    if len(sys.argv) != 4:
        print("Error: Número de parámetros erroneo.")
        print("Utilización: {} 'separador' 'formato_meses' 'orden'.".format(sys.argv[0]))
        print(""" 'Formato_meses', meses y años (nombre, numero,
        m_abreviado, a_abreviado_nombre, a_abreviado_numero o t_abreviado)""")
        print(" 'Orden'. Combinaciones dia, mes, año (dma).")
    else:
        try:
            with open("diccionario_fechas.txt", "w") as fd:
                fd.write(" ".join(diccionario_fechas(sys.argv[1], sys.argv[2], sys.argv[3])))
                print("""Se ha creado el diccionario y ha sido guardado con el nombre de 'diccionario_fechas.txt'""")
        except IOError:
            print("""Algo falló al generar el fichero con la lista de palabras.
            Compruebe que tiene permisos de escritura en el directorio de trabajo actual""")



No hay comentarios:

Publicar un comentario