Modelo para guardar un archivo en Django por fecha

logo django

En este articulo intentaré mostrarte como emplear el modelo para guardar un archivo en Django por fecha, lo cual puede ser muy útil al momento de recuperarlo.

Supongamos que tenemos archivos del tipo fotos y notas

Para lograr tenerlos organizarlos por fecha,  la estructura que debe llevar el modelo, puede ser esta en la que los archivos dentro de la carpeta img o la carpeta nota ordenados en el formato año/mes/dia.

foto = models.ImageField(upload_to = 'img/%Y/%m/%d')
nota = models.FileField(upload_to = 'nota/%Y/%m/%d')

Espero sinceramente, haber ayudado a alguien .

Quien siembre 100 boniatos y diga que sembró 200, tendrá que comerse sus mentiras cuando el boniato se le acabe.

D.

Ordenar fechas con sort en Python

logo python

Una forma muy sencilla y útil de organizar cronológicamente elementos, es ordenar las fechas con sort en Python.

Para esto, solo debemos añadir las fechas a una lista, y luego aplicarles el método sort().

En el ejemplo siguiente añadiremos fechas a una lista empleando el método append() y luego aplicaremos sort().

Otros post sobre fechas con Python

import datetime  
# Entramos por teclado las fechas

grupo_fechas=[]

fecha_1 = [input("Introduzca fecha"
        "(DD/MM/YYYY) : ").split('/')]
  
grupo_fechas.append(fecha_1)

fecha_2 = [input("Introduzca fecha"
        "(DD/MM/YYYY) : ").split('/')]
  
grupo_fechas.append(fecha_2)

fecha_3 = [input("Introduzca fecha"
        "(DD/MM/YYYY) : ").split('/')]
  
grupo_fechas.append(fecha_3)
grupo_fechas.sort()
  
for x in grupo_fechas:
    print(x)

El resultado nos devolverá las fechas que introduzcamos organizadas

Y esto es todo, espero sinceramente que este post, sirva a alguien.

No discutas nunca con un imbécil, te llevará a su terreno y allí te ganará por experiencia

D.

UnboundLocalError en Python

python error

Como sugiere el nombre, el error UnboundLocalError solo se genera, cuando se hace referencia de manera incorrecta, a una variable local no asignada.

Todas la excepciones en Python heredan de la clase BaseException, o extienden de una clase derivada de ella.

La jerarquía de la este error es la siguiente:

En la mayoría de los casos, esto ocurrirá al intentar modificar una variable local antes de que sea realmente asignada dentro del ámbito local.

Como puede ver, la función incrementar_valor() hace exactamente lo que el nombre implica: intentar incrementar la variable de conteo en uno y luego generar el resultado.

Sin embargo, existe una clara falta de asignación para la variable de recuento en el alcance local, y al no haber sido definida antes, la ejecución de este código genera un UnboundLocalError:

def incrementar_valor():
        count += 1
        print(count)
incrementar_valor()
UnboundLocalError                         
Traceback (most recent call last)
<ipython-input-50-8c8a38e696a5> in <module>
----> 1 incrementar_valor()
      2 

<ipython-input-49-2b22812a127f> in incrementar_valor()
      1 def incrementar_valor():
      2 
----> 3         count += 1
      4         print(count)
      5 

UnboundLocalError: local variable 'count' referenced before assignment

Dicho de otro modo, lo qué ha sucedido aquí es  que, dado que el analizador no puede localizar la variable count(),  no se puede generar una solución para  ejecutar la instrucción de incremento.

O sea estamos indicando un incremento, en una variable desconocida.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias

…. hay que levantarse cada mañana con una meta y dormirse cada noche con una esperanza….

Y.

Convertir una fecha a fecha y hora en Python

logo python

En este post, muestro otra forma de trabajar con el modulo datetime , empleándolo cuando necesitamos convertir una fecha a fecha y hora en Python

Desde mi conocimiento existen dos modos de hacerlo, una es mediante el uso directo de datetime y el otro utilizando combine datetime().

Aquí puedes ver como sumar y restar fechas con datetime en Python.

Partamos del supuesto que necesitas combinar la fecha y la hora en un solo objeto

Si solo tiene una fecha específica o la fecha actual y no tiene una hora específica, puede inicializarla con el tiempo mínimo usando el objeto datetime

En el ejemplo siguiente importamos la librería datetime, creamos una variable para la fecha, otra para la hora y las combinamos ambas, con combine().

Ejemplo 1

from datetime import date as Hoy
from datetime import datetime as HoyHora
fechaHoy =  Hoy.today()
print(fechaHoy)
horaHoy  =  HoyHora.now().time()
print(horaHoy)
FechaHoraHoy = FechaHoraHoy.combine(fechaHoy, horaHoy )
print(FechaHoraHoy)

Otra  cosa que podemos hacer es extraer  la fecha desde un objeto dado.

from datetime import date as fecha
from datetime import datetime as tiempo
fecha = fecha.today()
print(fecha)
tiempo = tiempo(fecha.year, fecha.month, fecha.day)
print(tiempo)

Y hasta aquí.

Espero que este post, sirva de ayuda a alguien.

Tres cosas necesitan las ovejas para andar en manadas, el miedo al perro, la voz de amo y que la viene detrás empuje por miedo a quedarse sola.

Y.

Leer un fichero línea a línea en Python

logo python

Una tarea común y cotidiana es  leer un fichero línea a línea en Python, lo cual el lenguaje facilita mucho, pero no deja de ser algo que vale la pena explicar.

Para leer un fichero debemos abrirlo con la función open() y luego emplearemos un for para recorrerlo y leerlo.

Es algo así:

with open('ruta_del_fichero') as f:
for linea in f:
 	#codigo….

o así:

#guardamos el contenido del fichero en una variable y lo leemos
fichero = open('ruta_del_fichero', ‘r’)
leído=fichero.read()
print(leido)

 Y esto es todo.

Espero sinceramente, que este post ayude a alguien.

Mejorar continuamente es mejor que ser bueno

ValueError en Python

python error

El ValueError en Python es una muestra de su flexibilidad.  

Python es lo suficientemente inteligente como para saber cuándo el código intenta asignar un valor incorrecto a un objeto.

Y es ahí es cuando lanzará su error ValueError que deberemos manejar.

En este post intentare explicar cual es su causa y su razón de ser.

Todas las excepciones de Python heredan de la clase BaseExceptions.

Dentro de la clase ValueError, también notará algunas otras excepciones.

La estructura jerárquica es esta.

BaseExceptions -> Exception -> ValueError -> UnicodeError -> UnicodeDecodeError -> UnicodeEncodeError -> UnicodeTranslateError

¿Qué es  el ValueError en Python Python?

Un ValueError en Python es aquel que se lanza cuando se asigna un valor incorrecto a un objeto.

numero = 7
lista = []
list.remove(numero)

Causas del ValueError en Python en Python.

Cuando tienes el mismo tipo de objeto, pero el valor incorrecto, Python rechaza el código.

Una equivocación común es confundir un ValueError con un TypeError.

A diferencia de ValueError, se lanzará un TypeError cuando se realiza una operación que utiliza un tipo de objeto incorrecto o no admitido.

O sea es una diferencia de tipo de objeto, no de su valor.

Aplicandolo a la vida real, si tienes un auto e intentas ponerle 5 neumaticos este es un error de valor, o sea un ValueError, por el valor de los neumáticos será como máximo 5.

Si por el contrario tuvieras un auto e intentaras meterlo en una bolsa de viaje, es una ejemplo de TypeError, porque además de que no cabe, el tipo de objeto que corresponde no es  ese.

Si ves una ventana que indica un ValueError en Python analiza tu código, buscando una de esas causas.

  • Intentas realizar una operación cuando no existe un valor
  • Tratas de extraer más valores de los que tiene un objeto
  • El valor  que esperas obtener es imposible (por ejemplo, si intentas obtener  la raíz de un número negativo).

Espero haber ayudado.

El amor tiene firma de autor, en las causas perdidas

R. Arjona

Uso de property en Python

logo python

Este post estará dedicado a otro decorador. Veremos el uso de property en Python, que bastante común para los desarrolladores.

Property nos permite trabajar con funciones como si fueran variables, y esta su magia dotándonos de una ventaja adicional al programar.

Como todo decorador, se escribe con la @ delante, o sea asi:

@property

Los decoradores classmethod y staticmethod

Veamos su uso en este ejemplo:

class boxeador(object):
    def __init__(self, color):
        self.color = color
    
    @property
    def esquina(self):
        print("Bienvenido, tu color es {}".format(self.color))
    
def main():
    a = boxeador('rojo')
    e = a.esquina
    
if __name__ == '__main__':
    main()

Output:

Bienvenido, tu color es rojo

Si eliminamos el decorador, no obtendríamos nada.

Y hasta aquí.

Espero que esto haya servido de ayuda a alguien.

Muchas gracias

Los hijos van al psicólogo a  pagar, para que le digan las mismas cosas que los padres llevan diciéndole años, gratis

Y

Listar un directorio en Python con walk() de forma recursiva.

logo python

En este articulo mostraré como listar un directorio en python con walk. En este link podrás ver también, como acceder a directorios con scandir

El método walk() pertenece al módulo os , y recibe como parámetro la ruta del contenido que recorreremos.

Como lo que hace el método es crear un iterador, que en cada iteración, devuelve tres valores: el nombre de la ruta completa del directorio, la lista de directorios que lo componen y la lista de ficheros de ese directorio.

El recorrido que hace el metodo por defecto es descendente, por lo que primero listará el contenido del directorio actual, y luego  ira descendiendo por nivel listando los directorios correspondientes.

 Cuando no se especifica la ruta,  walk() toma como referencia el directorio actual.

import os
dir = "/Users/blackmaster/Downloads/"

for nombre_directorio,carpetas,archivos in os.walk(dir):
    print('\n A')
    print(nombre_directorio)
    print('\n B')
    print(carpetas)
    print('\n C')
    print(archivos)

El resultado del script anterior irá devolviendo recursivamente, o sea por niveles los componentes de una ruta en este caso, separados por un salto de línea con los subtitulos A, B y C.

Te invito a que lo pruebes, para que lo comprendas mejor.

Si al método walk() le pasamos el argumento topdown=False:, mostrará  primero el contenido de los directorios más profundos.

Como por defecto, walk() no sigue los enlaces simbólicos que encuentra en un directorio, hay que pasar el argumento followlinks=True, para que lo haga.

import os
dir = "/Users/blackmaster/Downloads/"

for nombre_directorio,carpetas,archivos in os.walk(dir, topdown=False,followlinks=True):
    print('\n A')
    print(nombre_directorio)
    print('\n B')
    print(carpetas)
    print('\n C')
    print(archivos)

Y hasta aquí.

Espero modestamente, que este post ayude a alguien.

La clave para todo es la determinación

D.

AttributeError en Python

python error

El AttributeError, es un error común que aparece en Python por algunas razones que veremos a continuación.

La más común de ellas, es que obtengas este error, debido a qué has empleado una sangría errónea, como por ejemplo mezclar tabulaciones y espacios.

La otra causa que conozco, en Python 3+, es que esto ocurra si usas variables privadas que comienzan con doble subrayado.

Puedes leer sobre otros errores de Python en mi blog.

El aire hincha la vela, pero la deshilacha, y hay tantas velas rotas en el fondo del mar.

J.A. Buesa

AttributeError: ‘AxesSubplot’ object has no attribute ‘set_axis_labels’

seaborn error

Si estas recibiendo el error ‘AxesSubplot’ object has no attribute ‘set_axis_labels’; te daré una explicación de a que se debe.

Seaborn, no devuelve una figura que es lo que esperas obtener, sino un objeto  de ejes(axis-object)

La solución es importar matplotlib que será la encargada de dibujar el gráfico en el lugar indicado.

Puedes verlo en el ejemplo, que sigue.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

trim= pd.DataFrame({'mes': ['ene', 'feb', 'mar'], 'val': [100, 200, 300]})
barplot(x = 'mes', y = 'val', 
trim = meses,
color = 'blue')
ax.set(xlabel='common xlabel', ylabel='common ylabel')
plt.show()

Puedes contactar conmigo acá:

Por que la vida es eso sembrar, sembrar, sembrar

J. A. Buesa
Translate »